定義游標時使用動態SQL

2021-05-23 17:06:43 字數 988 閱讀 8645

在定義游標時,我們一般是這樣定義的:

declare cur cursor for select * from  tablename 

open  cur

fetch next from cur

while @@fetch_status = 0

begin

fetch next from cur 

end 

close cur

deallocate cur

但是有時候需要用到動態sql,一般情況下我們想到的方法是:

declare @sql nvarchar(1000)

set @sql='select * from  tablename '

declare cur cursor for 

execute sp_executesql @sql 

open  cur

fetch next from cur

while @@fetch_status = 0

begin

fetch next from cur 

end 

close cur

deallocate cur

但是這種寫法是錯誤的,正確的應該是:

declare @sql nvarchar(1000)

set @sql='declare cur cursor for select * from  tablename'

execute sp_executesql @sql

open  cur

fetch next from cur

while @@fetch_status = 0

begin

fetch next from cur 

end 

close cur

deallocate cur

我遇到了這個問題,通過搜尋解決了問題,現在寫出來與大家分享,我也是學人家的。

PL SQL 動態SQL 游標

1.使用動態sql可以在依賴物件不存在時建立子程式 2.動態sql主要利用execute immediate語句執行dml ddl dcl等語句操作 3.如果使用了繫結變數,則必須在execute immediate中使用using字句設定所需要的繫結變數 4.使用returning或return語...

REF 動態SQL游標

declare tb count number tb datatype varchar2 100 type refcur finding is ref cursor ref 動態游標建立 refcur refcur finding codevalue varchar2 100 begin tb da...

PL SQL中使用DML 游標 動態SQL

先申明我不是牛x,所有有錯的地方,希望廣大讀友能提醒俺一下!1.兩個常用異常處理 declare v empno emp.empno type v ename emp.ename type begin v empno 請輸入工號 select ename into v ename from emp ...