怎樣sql儲存過程中執行動態sql語句

2022-02-27 01:45:57 字數 3299 閱讀 6299

1樓:手機使用者

有時需要在oracle 儲存過程中執行動態sql 語句 ,例如表名是動態的,或字段是動態的,

或查詢命令是動態的,可用下面的方法:

set serveroutput ondeclaren number;sql_stmt varchar2(50);

t varchar2(20);beginexecute immediate 'alter session set nls_date_format=''yyyymmdd''';

t := 't_' || sysdate;

sql_stmt := 'select count(*) from ' || t;

execute immediate sql_stmt into n;

dbms_output.put_line('the number of rows of ' || t || ' is ' || n);end;

如果動態sql 語句 很長很複雜,則可用包裝.

create or replace package test_pkgistype cur_typ is ref cursor;

procedure test_proc (v_table varchar2,t_cur out cur_typ);end;/

create or replace package body test_pkgisprocedure test_proc (v_table varchar2,t_cur out cur_typ)issqlstr varchar2(2000);beginsqlstr := 'select * from '||v_table;

open t_cur for sqlstr;end;end;/

在oracle 中批量匯入,匯出和刪除表名以某些字元開頭的表

spool c:\a.sql

oracle儲存過程中如何執行動態sql語句

2樓:納蘭

有時需要在oracle 儲存過程中執行動態sql 語句 ,例如表名是動態的,或字段是動態的,或查詢命令是動態的,可用下面的方法: set serveroutput on declare n number; sql_stmt varchar2(50); t varchar2(20); begin execute immediate 'alter session set nls_date_format=''yyyymmdd'''; t := 't_' || sysdate; sql_stmt :

= 'select count(*) from ' || t; execute immediate sql_stmt into n; dbms_output.put_line('the number of rows of ' || t || ' is ' || n); end; 如果動態sql 語句 很長很複雜,則可用包裝. create or replace package test_pkg is type cur_typ is ref cursor; procedure test_proc (v_table varchar2,t_cur out cur_typ); end; / create or replace package body test_pkg is procedure test_proc (v_table varchar2,t_cur out cur_typ) is sqlstr varchar2(2000); begin sqlstr :

= 'select * from '||v_table; open t_cur for sqlstr; end; end; / 在oracle 中批量匯入,匯出和刪除表名以某些字元開頭的表 spool c:\a.sql select 'drop table ' || tname || ';' from tab where tname like 't%'; spool off @c:\a

如何在oracle儲存過程中執行動態sql語句

3樓:尐i強

時需要在oracle 儲存過程中執行動態sql 語句 ,例如表名是動態的,或字段是動態的,

或查詢命令是動態的,可用下面的方法:

set serveroutput ondeclaren number;sql_stmt varchar2(50);

t varchar2(20);beginexecute immediate 'alter session set nls_date_format=''yyyymmdd''';

t := 't_' || sysdate;

sql_stmt := 'select count(*) from ' || t;

execute immediate sql_stmt into n;

dbms_output.put_line('the number of rows of ' || t || ' is ' || n);end;

如果動態sql 語句 很長很複雜,則可用包裝.

create or replace package test_pkgistype cur_typ is ref cursor;

procedure test_proc (v_table varchar2,t_cur out cur_typ);end;/

create or replace package body test_pkgisprocedure test_proc (v_table varchar2,t_cur out cur_typ)issqlstr varchar2(2000);beginsqlstr := 'select * from '||v_table;

open t_cur for sqlstr;end;end;/

在oracle 中批量匯入,匯出和刪除表名以某些字元開頭的表

spool c:\a.sql

儲存過程中的動態sql有函式怎麼呼叫

在儲存過程中如何執行動態sql語句、是sql資料庫 是個帶引數的儲存過程,用來拼接sql語句的

4樓:匿名使用者

declare @s varchar(32) ,@dd varchar(32)

set @s ='select * from '

set @dd =' table_cs'

exec (@s + @dd)

5樓:匿名使用者

exec('select * from table')

6樓:

declare @sql nvarchar(max)

select @sql= 'select ....'

exec(@sql)

sql儲存過程中如何使用declare有的儲存過程宣告瞭,有的沒有宣告。請回答的詳細點。。謝謝

如果你把儲存過程看作是批處理語句就好理解多了!儲存過程只不過是一個帶著名稱的sql批處理語句,如果在整個過程中需要變數時就是可以宣告,但該變數宣告後只能存活在批處理 儲存過程 的執行中,執行完畢後就會消失,這種宣告的格式就是 declare 變數名 型別 其中變數名為了與資料庫中的列名相互區別,所以...

儲存過程中引數是動態的,需要判斷是否為空

1 新建乙個html檔案,命名為test.html。2 在test.html檔案內,使用function宣告乙個函式,str為函式的引數。3 在is e 函式內,首先使用if語句進行null 空 undefined的情況判斷,如果符合,則彈出 內容為空 的提示。4 在is e 函式內,再使用正規表示...

怎樣在滑冰的過程中保護自己,輪滑過程中怎樣安全保護自己

於安乾 http www.ycen.com.cn gb content 2005 12 25 content 316358.htm 初次上冰前先要佩戴護肘 護膝 手套,頭盔等防護用具,選擇好合適的冰鞋。a 穿冰鞋 初學滑冰的人穿冰鞋時,前兩三個釦眼的鞋帶可系得稍微鬆一點兒,後面的鞋帶要繫緊,腳腕子在...