用动态SQL来实现例CREATE OR REPLACE PROCEDURE Test1 IS
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;
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;
麻烦你帮我写点注释,那个DBMS_SQL是个什么东东?
权限需显示赋权,例如
grant create table to userfreddy2003的写法是在8中的写法,在8i及以后的版本中可以更简单,例如:
CREATE OR REPLACE PROCEDURE Test1 as
BEGIN
execute immediate '...';
END Test1;
create or replace procedure name_pro(p_table varchar2)
as
str varchar2(50);
begin
str:='create table '||p_table||'(a varchar2(10))';--grant create any table to you_userexecute immediate str;
end;
/
那返回多行记录怎么处理 execute immediate 'open out_result for select A1 from t1 '出错!