oracle procedure plsql 動態sql之動態傳遞表
SQL> create or replace procedure proc_sql
2 as
3 v_tab varchar2(100);
4 begin
5 v_tab:='zxy';
6 execute immediate 'create table :tab(a int)' using v_tab;
7 end;
8 /
Procedure created
SQL> exec proc_sql;
begin proc_sql; end;
ORA-00903: invalid table name
ORA-06512: at "TBS_AUTO.PROC_SQL", line 6
ORA-06512: at line 2
小結;不能用繫結變數方式傳入表名
SQL> create or replace procedure proc_sql
2 as
3 v_tab varchar2(100);
4 v_sql varchar2(4000);
5 begin
6 v_tab:='zxy';
7 execute immediate 'create table '||v_tab||'(a int)';
8 end;
9 /
Procedure created
SQL> exec proc_sql;
begin proc_sql; end;
ORA-01031: insufficient privileges
ORA-06512: at "TBS_AUTO.PROC_SQL", line 7
ORA-06512: at line 2
小結:使用拼接字串可以建立動態sql
但若執行動態sql所屬的儲存過程,即提上述錯誤
SQL> create or replace procedure proc_sql
2 AUTHID CURRENT_USER is
3 v_tab varchar2(100);
4 v_sql varchar2(4000);
5 begin
6 v_tab:='zxy';
7 execute immediate 'create table '||v_tab||'(a int)';
8 end;
9 /
Procedure created
SQL> exec proc_sql;
PL/SQL procedure successfully completed
SQL> desc zxy;
Name Type Nullable Default Comments
---- ------- -------- ------- --------
A INTEGER Y
小結:新增選項AUTHID CURRENT_USER is
即要正確執行
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-754699/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle plsql之動態sql_輸出拼接的長字串OracleSQL字串
- PLSQL Language Referenc-PL/SQL動態SQL-何時需要動態SQLSQL
- Oracle 動態SQLOracleSQL
- PLSQL Language Referenc-PL/SQL動態SQL-本地動態SQL(EXECUTE IMMEDIATE語句)SQL
- 動態sql 報表SQL
- oracle儲存過程(procedure)中執行動態SQL小記Oracle儲存過程SQL
- oracle 10g 動態拼接sql(內含plsql過程)Oracle 10gSQL
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- oracle procedure儲存過程輸入引數之動態sql傳入(括號及,逗號的特殊處理Oracle儲存過程SQL
- Oracle動態效能表(1)Oracle
- PLSQL Language Referenc-PL/SQL動態SQL-動態SQL中重複的佔位符名名稱SQL
- oracle動態sql執行table表中儲存的sqlOracleSQL
- MyBatis引數傳入集合之foreach動態sqlMyBatisSQL
- 動態SQLSQL
- 動態SQL intoSQL
- Mybatis介紹之 動態SQLMyBatisSQL
- oracle 遊標中使用 動態 sqlOracleSQL
- (轉):學習Oracle動態效能表-(6)-V$SQL,V$SQL_PLANOracleSQL
- MyBatis 動態 SQLMyBatisSQL
- MybBatis動態SQLBATSQL
- Mybatics動態sqlBATSQL
- ABAP 動態 SQLSQL
- mybatis動態SQLMyBatisSQL
- MyBatis框架之SQL對映和動態SQLMyBatis框架SQL
- oracle監聽之動態和靜態註冊Oracle
- 動態表名
- Linq之動態排序(字元傳入)排序字元
- oracle動態sql儲存過程示例OracleSQL儲存過程
- Oracle 迴圈呼叫動態SQL語句OracleSQL
- oracle動態sql語句處理(轉)OracleSQL
- PLSQL_動態語句的解析(概念)SQL
- 學習動態效能表(三)-(1)-v$sqlSQL
- 1 Mybatis動態SQLMyBatisSQL
- Mybatis--動態SQLMyBatisSQL
- MyBatis(七) 動態SQLMyBatisSQL
- 避免動態SQL(二)SQL
- 避免動態SQL(一)SQL
- 學習oracle動態效能表--v$transactionOracle