> 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编译错误。 *操作:
156
我想使用存储在b_employee_id
中的employee_id答案 0 :(得分:2)
首先,您在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
如果您的意图不是硬编码要运行查询的employee_id(我通过读取WHERE子句末尾的注释行来猜测),那么您需要在WHERE子句中使用替换变量,像这样:
WHERE employee_id = :b_emp_id
此处的另一个假设是,表中有一个记录,您尝试检索记录。您不应在INTO clause
如果您想因任何原因将INTO clause
中返回的值覆盖为某个其他值,您可以稍后在程序中使用另一个变量来执行此操作。