my_query varchar2(900);
my_query:='create global temporary table tmp_A
as select * from B where 1=2 ';
EXECUTE IMMEDIATE my_query;
--创建临时表的
my_query:='create global temporary table tmp_A
as select * from B where 1=2 ';
EXECUTE IMMEDIATE my_query;
--创建临时表的
为什么在存储过程里会出错呢?
单独拿出来执行却没有问题
create or replace function test return varchar2 as
v_cursor number;
v_string varchar2(200);
v_row number;
begin
v_cursor:=dbms_sql.open_cursor;
--v_string:='update fnd_user a set a.description=''丁亚军'' where a.user_id=1055';
v_string:='create table testdb (text varchar2(200))';
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);
v_row:=dbms_sql.execute(v_cursor);
dbms_sql.close_cursor(v_cursor);
return ('成功执行');
exception
when others then
dbms_sql.close_cursor(v_cursor);
return ('执行失败!'||sqlcode||sqlerrm);
raise;
end;
EXECUTE IMMEDIATE 'create table tablename as select * from tablename'
这样就行了。
删表也是一样。
v_Sql VARCHAR2(200);
Cursor_create VARCHAR2(100);
Result NUMBER;
BEGIN
v_Sql := '
CREATE TABLE T1
(
A VARCHAR2(200)
)
';
cursor_create := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_create, v_SQL,dbms_sql.native);
Result := dbms_sql.EXECUTE(cursor_create);
DBMS_SQL.close_cursor(cursor_create);END Test1;
去留个QQ吧!!!!