oracle pl/sql用户输入错误“未声明绑定变量”

mjqavswn  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(974)
accept x char prompt 'Please enter something: '
declare 
  a varchar2(50);
begin
  a := '&x';
  Select MIN(lowest_elevation) as lowest , Max(highest_elevation)as highest FROM countries where country_name = :a;
end;

我从用户那里获取输入,然后将其传递到where子句中。我似乎在网上找不到任何解决办法。我不知道我做错了什么。先谢谢你。

dy1byipe

dy1byipe1#

a 是pl/sql局部变量,而不是sql绑定变量,因此在引用它时不应使用冒号:

where country_name = a;

要使它成为绑定变量,它需要由客户机/应用程序/ide定义;例如,在sql developer中:

accept x char prompt 'Please enter something: '
variable a varchar2(50);

begin
  :a := '&x';
  Select MIN(lowest_elevation) as lowest , Max(highest_elevation)as highest
  FROM countries
  where country_name = :a;
end;

请注意,现在没有 declare 部分,因为您不再声明 a 作为pl/sql变量—它是一个客户机变量。指定替换变量 &x 它需要结肠, :a := '&x'; ,因为它也是一个绑定变量。
我不是说那是你应该做的;只是显示出不同。
你也可以跳过 a 当然,完全可变:

accept x char prompt 'Please enter something: '

begin
  Select MIN(lowest_elevation) as lowest , Max(highest_elevation)as highest
  FROM countries
  where country_name = '&x';
end;

顺便说一句,您必须选择某个内容,这样您的代码仍然不能像当前编写的那样工作。

相关问题