CREATE PROCEDURE [dbo].[cs_AutoCode] AS
declare @szItem varchar(13),@szSamno varchar(8)
declare @iCounter int
set @iCounter=1
declare hCursor cursor global for select itemno,samno from shi order by itemno for update of samno
CREATE PROCEDURE [dbo].[cs_AutoCode] AS
declare @szItem varchar(13),@szSamno varchar(8)
declare @iCounter int
set @iCounter=1
declare hCursor cursor global dynamic for select itemno,samno from shi order by itemno for update of samno
说明 如果 GLOBAL 和 LOCAL 参数都未指定,则默认值由 default to local cursor 数据库选项的设置控制。在 SQL Server 7.0 版中,该选项默认为 FALSE 以与 SQL Server 早期版本相匹配,在 SQL Server 早期版本中所有游标都是全局的。该选项的默认值在以后的 SQL Server 版本中可能会更改。有关更多信息,请参见设置数据库选项。
declare hCursor cursor global dynamic for select itemno,samno from shi order by itemno for update of samno
伺服器: 訊息 16957,層級 16,狀態 4,程序 cs_AutoCode,行 5
FOR UPDATE 不可指定於 READ ONLY 資料指標 (Cursor)。
SQL2000的模板
-- =============================================
-- Declare and using an UPDATE cursor
-- =============================================
DECLARE <@variable_1, sysname, @v1> <datatype_for_variable_1, sysname, varchar(20)>,
<@variable_2, sysname, @v2> <datatype_for_variable_2, sysname, varchar(40)>
DECLARE <cursor_name, sysname, test_cursor> CURSOR
FOR SELECT <column_1, sysname, au_fname>, <column_2, sysname, au_lname> FROM <table_name, sysname, pubs.dbo.authors>
FOR UPDATE of <column_1, sysname, au_fname>
DECLARE @count smallint
SELECT @count = 1
OPEN <cursor_name, sysname, test_cursor>
FETCH NEXT FROM <cursor_name, sysname, test_cursor> INTO <@variable_1, sysname, @v1>, <@variable_2, sysname, @v2>
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
-- PRINT 'add user-defined code here...'
-- eg
PRINT 'updating record of ' + @v1 + ' ' + @v2
UPDATE pubs.dbo.authors
SET au_fname = @v1 + '-' + CAST(@count AS varchar(4))
WHERE au_lname = @v2
END
FETCH NEXT FROM <cursor_name, sysname, test_cursor> INTO <@variable_1, sysname, @v1>, <@variable_2, sysname, @v2>
SELECT @count = @count + 1
END
CLOSE <cursor_name, sysname, test_cursor>
DEALLOCATE <cursor_name, sysname, test_cursor>
GO