我想获取特定的列值a.id并将其存储到变量v_id中.然后使用此值传递到存储过程.
DECLARE v_id a.id%TYPE;
BEGIN
SELECT id into v_id from a where a.name='test' and rownum <2 order by id desc;
Print v_id;
doSomething(v_id);
END;
/
Run Code Online (Sandbox Code Playgroud)
我在Oracle SQL Developer中遇到此错误:
错误报告:ORA-06550:第3行,第7列:PLS-00103:遇到以下其中一项时遇到符号"V_ID":
:=.(@%;符号":="代替"V_ID"继续.06550.00000 - "行%s,列%s:\n%s"*原因:通常是PL/SQL编译错误.*操作:
Ben*_*Ben 11
如果你想使用rownum和order by您必须在一个子查询放的顺序.没有其他方法可以保证您获得正确的值.
处理可能没有id与您的查询匹配的可能性也是一种好习惯.我添加了一个额外的begin... end;块来处理这个问题.
declare
v_id a.id%type;
begin
begin
select id into v_id
from ( select id
from a
where name = 'test'
order by id desc )
where rownum < 2
;
exception when no_data_found then
v_id := null;
end;
dbms_output.put_line(v_id);
doSomething(v_id);
end;
/
Run Code Online (Sandbox Code Playgroud)
正如@raukh所说(当我写这篇文章时!)问题是print,应该是dbms_output.put_line()
| 归档时间: |
|
| 查看次数: |
38714 次 |
| 最近记录: |