如下:
create or replace procedure Inset_Differ_ForApprove(strsql In Varchar2) Is
ls_sql Varchar2(1000);CURSOR approve_i Is
select * from tab where || ls_sql || group by tid order by id desc...
编译报错:PLS-00103: 出现符号 "GROUP"在需要下列之一时:
(-+modnull<an identifier>
<a double-quoted delimited-identifier><a bind variable>avg
countcurrentmaxminpriorsqlstddevsumvarianceexecuteforalltime
timestampintervaldate
<a string literal with character set specification>
<a number><a single-quoted SQL string>
符号 "null" 被替换为 "GROUP" 后继续
如果是这样写select * from tab where || ls_sql group by tid order by id desc
...
则报“无效的数字”
请问如何解决。谢谢
create or replace procedure Inset_Differ_ForApprove(strsql In Varchar2) Is
ls_sql Varchar2(1000);CURSOR approve_i Is
select * from tab where || ls_sql || group by tid order by id desc...
编译报错:PLS-00103: 出现符号 "GROUP"在需要下列之一时:
(-+modnull<an identifier>
<a double-quoted delimited-identifier><a bind variable>avg
countcurrentmaxminpriorsqlstddevsumvarianceexecuteforalltime
timestampintervaldate
<a string literal with character set specification>
<a number><a single-quoted SQL string>
符号 "null" 被替换为 "GROUP" 后继续
如果是这样写select * from tab where || ls_sql group by tid order by id desc
...
则报“无效的数字”
请问如何解决。谢谢
当有值时:and ceatedate>=to_date('2006-6-6','yyyy-MM-dd')
否则:and 1=1
这样的的是动态SQL吧。动态SQL如何执行。又如何取值呢。谢谢我对oracle刚用,很多东西不懂。谢谢各位的帮忙!
v_sql VARCHAR2(200);
v_rec B_AREAS%ROWTYPE;
BEGIN
v_sql:='select * from b_areas';
OPEN v_cursor FOR v_sql;
LOOP
FETCH v_cursor INTO v_rec;
EXIT WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (v_rec.area_id);
END LOOP;
END;
一般都用
for的形式打开
v_sql VARCHAR2(200); begin
v_sql:='select * from table ';
v_sql:=v_sql||strsql;
...测试报错:SQL命令未正确结束。???