实在是不懂,自己瞎弄得,请指教了?
declare
v_exec_sql varchar2;
BEGIN
v_exec_sql:='select 'select '||'col1,col2'||' from '||(select 'table_1'||substr(to_char(sysdate,'yyyymmdd'),3,7)||'0500' from dual) from dual';
EXECUTE IMMEDIATE v_exec_sql;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
END
/
因为v_exec_sql是个语句,所以不知道怎么执行它?这样对不对的?
declare
v_exec_sql varchar2;
BEGIN
v_exec_sql:='select 'select '||'col1,col2'||' from '||(select 'table_1'||substr(to_char(sysdate,'yyyymmdd'),3,7)||'0500' from dual) from dual';
EXECUTE IMMEDIATE v_exec_sql;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
END
/
因为v_exec_sql是个语句,所以不知道怎么执行它?这样对不对的?
这句在sqlplus下运行可以出来啊:
SQL> select 'select '||'col1,col2'||' from '||(select 'table_1'||substr(to_char(sysdate,'yyyymmdd'),3,7)||'0500' from dual) from dual;'SELECT'||'COL1,COL2'||'FROM'|
---------------------------------------------
select col1,col2 from table_10801280500应该怎么改呢?
其实我的想法很简单,就是要求它能够执行:select col1,col2 from table_10801280500 这个语句,然后出结果!
SQL> declare
2 col1 nvarchar2(20);
3 col2 nvarchar2(20);
4 v_exec_sql varchar2(1000);
5 begin
6 col1 := 'flda';
7 col2 := 'fldb';
8 v_exec_sql := 'select '||col1||','||col2||' from table_1'||substr(to_char(sysdate,'yyyymmdd'),3,7)||'0500';
9 dbms_output.put_line(v_exec_sql);
10 --execute immediate v_exec_sql
11 end;
12 /select flda,fldb from table_10801280500PL/SQL procedure successfully completedExecuted in 0 seconds
编译通过了,我试试吧!^_^