create or replace procedure aaa Authid Current_User as v_d1 date; v_d2 date; str varchar2(500);beginv_d1:=trunc(sysdate)-30; v_d2:=trunc(sysdate);str:= 'CREATE TABLE table1 as Select USER_NO,Max(join_date) join_date from xxx@db_link aa where aa.JOIN_DATE>='||v_d1||' And aa.JOIN_DATE<'||v_d2||' group by USER_NO '; execute immediate str;end aaa; 就是这个,报错ORA-00933: SQL 命令未正确结束 ORA-06512: 在 "aaa", line 43 ORA-06512: 在 line 1 到底什么原因呢,是这个Select USER_NO,Max(join_date) join_date from xxx@db_link的问题吗, 是动态SQL中不能使用@db_link还是什么问题?高手解答下
问题已经解决了,还是引用变量问题 aa.JOIN_DATE>='||v_d1||' And aa.JOIN_DATE<'||v_d2||' group by USER_NO ' 不能用单引号,aa.JOIN_DATE>='''||v_d1||''' And aa.JOIN_DATE<'''||v_d2||''' group by USER_NO ' 改成这样就好了。
--变量定义完后 ,后面开始
begin
as
v_d1 date;
v_d2 date;
str varchar2(500);beginv_d1:=trunc(sysdate)-30;
v_d2:=trunc(sysdate);str:= 'CREATE TABLE table1 as Select USER_NO,Max(join_date) join_date from xxx@db_link aa where aa.JOIN_DATE>='||v_d1||' And aa.JOIN_DATE<'||v_d2||' group by USER_NO ';
execute immediate str;end aaa;
就是这个,报错ORA-00933: SQL 命令未正确结束
ORA-06512: 在 "aaa", line 43
ORA-06512: 在 line 1
到底什么原因呢,是这个Select USER_NO,Max(join_date) join_date from xxx@db_link的问题吗,
是动态SQL中不能使用@db_link还是什么问题?高手解答下
aa.JOIN_DATE>='||v_d1||' And aa.JOIN_DATE<'||v_d2||' group by USER_NO '
不能用单引号,aa.JOIN_DATE>='''||v_d1||''' And aa.JOIN_DATE<'''||v_d2||''' group by USER_NO ' 改成这样就好了。