0
由於基於數據的父 - 子關係的存儲過程的嵌套,我聲明瞭一個動態光標,該關係可以轉到多個級別,並在處理時每天變化。該存儲的過程適用於父調用,但此過程的子數據過程會導致一條消息,指出「光標未打開」。此消息發生在檢查後確保遊標處於打開狀態的Fetch處。SQL Server - 光標錯誤
DECLARE @OutCur CURSOR;
DECLARE @curName as NVARCHAR(MAX);
...
SET @curName = LEFT(replace(replace(CONVERT (time, GETDATE()),':',''),'.',''),8);
SET @sqlCommand = 'SELECT a.myfields FROM mytable a;
SET @sqlCommand = 'SET @cursor' + @curName + ' = CURSOR LOCAL FAST_FORWARD FOR ' + @sqlCommand + ' OPEN @cursor' + @curName + ';'
SET @curName = '@cursor' + @curName + ' cursor output';
EXEC sys.sp_executesql @sqlCommand,@curName,@OutCur output
IF CURSOR_STATUS('global','@OutCur')=-1
OPEN @OutCur;
FETCH NEXT FROM @OutCur INTO @name,@type
在此先感謝您的意見。
細說什麼是「慣例」,以及他們如何溝通。你的遊標在嵌套過程中聲明瞭嗎? –
你真的需要光標嗎?大多數情況下,人們在不應該使用遊標的時候,因爲他們不熟悉如何在基於集合的操作中執行相同的操作。也許如果你能分享你的實際邏輯,我們可以完全擺脫光標。 –
@SeanLange您對此方案有默認的剪切/粘貼響應嗎? ;) – Lankymart