求助,请帮忙看看这个存储过程如何调用这个为了在执行insert的时候返回rowidCREATE or REPLACE procedure getRowidAfterInsert(
v_sql varchar2,
v_rid out varchar2
)
as
v_newsql varchar(8000);
rid varchar2(30);
begin
v_newsql:=v_sql||' return rowid into :rid';
EXECUTE IMMEDIATE v_newsql returning INTO rid;
v_rid:=rid;
end getRowidAfterInsert;
/我这样执行会出错
exec getRowidAfterInsert('insert into scott.emp(empno) values(1)',:rid);SP2-0552: 未说明结合变量"RID"请问改如何解决啊
v_sql varchar2,
v_rid out varchar2
)
as
v_newsql varchar(8000);
rid varchar2(30);
begin
v_newsql:=v_sql||' return rowid into :rid';
EXECUTE IMMEDIATE v_newsql returning INTO rid;
v_rid:=rid;
end getRowidAfterInsert;
/我这样执行会出错
exec getRowidAfterInsert('insert into scott.emp(empno) values(1)',:rid);SP2-0552: 未说明结合变量"RID"请问改如何解决啊
解决方案 »
- 急求ETL工具使用视频的下载地址
- 数据更改插入空格?@大神!!!!
- oracle添加非空制约
- ORACLE事务问题的请教。
- 关于随机查询的疑问
- 这条sql语句如何进行调优,希望能运行快点
- 急求,oracle的ado客户端组件在那里下载???
- Oracle text manager
- 一个数据表post,含有userid,post,time,其中userid是用户名,post帖子,time是用户发帖的时间,怎样写出一个语句查处所有用户最近的帖
- 斑竹在不在阿,有人在这里灌水,: (
- 如何把oracle10g快揵版移至oracle10g企业版
- 急急急...怎么创建Oracle全文索引?着急请各位大侠帮忙!
declare
rid varchar2(200);
begin
getRowidAfterInsert('insert into scott.emp(empno) values(1)',rid);
dbms_output.put_line(rid);
end
VAR rid varchar2(30);
exec getRowidAfterInsert('insert into scott.emp(empno) values(1)',:rid);
print rid;
这个会报错declare
*
ERROR 位于第 1 行:
ORA-01008: 并非所有变量都已关联
ORA-06512: 在"SCOTT.GETROWIDAFTERINSERT", line 10
ORA-06512: 在line 4之后又反复试了几次,还是会报错,但是错误变了。。
end
*
ERROR 位于第 6 行:
ORA-06550: 第 6 行, 第 3 列:
PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
; <an identifier>
<a double-quoted delimited-identifier>
符号 ";" 被替换为 "end-of-file" 后继续。感谢回帖。
Wrote file afiedt.buf 1 CREATE or REPLACE procedure getRowidAfterInsert(
2 v_sql varchar2,
3 v_rid out varchar2
4 )
5 as
6 v_newsql varchar(8000);
7 rid varchar2(30);
8 begin
9 v_newsql:=v_sql||' return rowid into :rid';
10 EXECUTE IMMEDIATE v_newsql returning INTO rid;
11 v_rid:=rid;
12* end getRowidAfterInsert;
SQL> /Procedure created.SQL> set serveroutput on;
SQL> ed
Wrote file afiedt.buf 1 declare
2 rid varchar2(200);
3 begin
4 getRowidAfterInsert('insert into scott.emp(empno) values(1)',rid);
5 dbms_output.put_line(rid);
6* end;
SQL> /
AAAMfPAAEAAAAAfAAAPL/SQL procedure successfully completed.仅仅是丢掉了;而已,