> set serveroutput on
> set autoprint on;
> declare
> v_first_name employees.first_name%type;
> v_street_address locations.street_address%type;
> v_city locations.city%type;
> v_postal_code locations.postal_code%type;
> begin
> select employee_id first_name,street_address,city,postal_code into:b_employee_id,v_first_name,v_street_address,v_city,v_postal_code
>
> from employees natural join locations
> where employee_id=156; // how to get employee_id stored in b_employee_ud
> dbms_output.put_line('the employee'||v_first_name ||' is located at:'||v_street_address|| v_city ||v_postal_code );
> end;
> /
获取错误
错误报告:
ORA-06550:第7行,第134列:
pl/sql:ora-00913:值太多
ORA-06550:第7行,第1列:
pl/sql:sql语句被忽略
06550。00000-“行%s,列%s:\n%s”
*原因:通常是pl/sql编译错误。
*行动:
员工ID
一百五十六
我想使用存储在b_employee_id中的employee_id
最佳答案
首先,select子句中的comma
后面缺少一个employee_id
。
select employee_id first_name,street_address,city,postal_code
into :b_employee_id,v_first_name,v_street_address,v_city,v_postal_code
应该是
select employee_id, first_name,street_address,city,postal_code
into :b_employee_id,v_first_name,v_street_address,v_city,v_postal_code
现在,回到要使用employee_id=156的部分
我想使用存储在b_employee_id中的employee_id
如果您的意图不是对要运行查询的雇员id进行硬编码(我是通过阅读where子句末尾的注释行来猜测的),那么您需要在where子句中使用替换变量,如下所示:
WHERE employee_id = :b_emp_id
这里的另一个假设是,在您试图从中检索记录的表中有一个员工的记录。不应在
INTO clause
的变量中使用替换变量。如果您想以任何原因将
INTO clause
中返回的值重写为其他值,可以稍后在程序中使用另一个变量来执行此操作。关于sql - 错误报告:ORA-06550:第7行,第134列:PL/SQL:ORA-00913:值太多ORA-06550:第7行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21670571/