在ORACLE存储过程中,我定义了一个变量
DECLARE TEMPSQL NVARCHAR2(2000); --SQL语句
TABLENAME NVARCHAR2(100); --表名
TEMPID NUMBER; --字段ID的参数
TYPE T_CUR IS REF CURSOR;
CUR T_CUR; --声明一个指针
TEMPSQL='SELECT * FROM '||TABLENAME||' WHERE ID='||TEMPID||'';
当我打开指针的时候报错:(无效的SQL语句)
我采用的方法是:OPEN CUR FOR '||TEMPSQL||';
请高手指点下,我OPEN指针时的语法错误....
DECLARE TEMPSQL NVARCHAR2(2000); --SQL语句
TABLENAME NVARCHAR2(100); --表名
TEMPID NUMBER; --字段ID的参数
TYPE T_CUR IS REF CURSOR;
CUR T_CUR; --声明一个指针
TEMPSQL='SELECT * FROM '||TABLENAME||' WHERE ID='||TEMPID||'';
当我打开指针的时候报错:(无效的SQL语句)
我采用的方法是:OPEN CUR FOR '||TEMPSQL||';
请高手指点下,我OPEN指针时的语法错误....
OPEN CUR FOR TEMPSQL;
DECLARE
TEMPSQL NVARCHAR2(2000) ; --SQL语句
tablename NVARCHAR2(100); --表名
tempid NUMBER; --字段ID的参数
cur sys_refcursor; --声明一个指针
begin
TEMPSQL := 'SELECT * FROM ' || TABLENAME || ' WHERE ID=''' || TEMPID || '''' ; open cur for
tempsql;
loop
fetch cur
into xxxx;
exit when cur%notfound
--to do sth
end loop;
end;
tempsql;
提示表达式错误
tempsql;
提示表达式类型错误
-------改成这样。。
TEMPSQL := 'SELECT * FROM ' || TABLENAME || ' WHERE ID=''' || TEMPID || ''''
--TEMPID NUMBER; --字段ID的参数 id 是number类型
TEMPSQL='SELECT * FROM '||TABLENAME||' WHERE ID='||TEMPID||;--TEMPID NUMBER; --字段ID的参数 id 是varchar2类型TEMPSQL='SELECT * FROM '||TABLENAME||' WHERE ID='''||TEMPID||'''';
--TEMPID NUMBER; --字段ID的参数 id 是number类型
TEMPSQL:='SELECT * FROM '||TABLENAME||' WHERE ID='||TEMPID||;--TEMPID NUMBER; --字段ID的参数 id 是varchar2类型TEMPSQL:='SELECT * FROM '||TABLENAME||' WHERE ID='''||TEMPID||'''';
但是还是提示错误
loop
...
end loop;
close cur;