我有100個數據庫,我需要對過程進行更改,它們都具有相同的過程。我如何添加一個可以讓我做這個改變的光標?如何在SQL遊標中修改
DECLARE @databasename varchar(100)
DECLARE @Command nvarchar(200)
DECLARE database_cursor CURSOR FOR
SELECT name
FROM MASTER.sys.sysdatabases
OPEN database_cursor
FETCH NEXT FROM database_cursor INTO @databasename
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Command = 'ALTER PROCEDURE ''' + @databasename + '''.[dbo].[DeleteAccountUpgrade]
@Id INT
AS
DELETE FROM AccountUpgrades WHERE Id = @Id'
EXEC sp_executesql @Command
FETCH NEXT FROM database_cursor INTO @databasename
END
CLOSE database_cursor
DEALLOCATE database_cursor
它說,我需要聲明@Id,但我不明白爲什麼,我只是想運行的每個數據庫上改變,我不發送任何數據來執行的程序,我只是想修改所有數據庫的現有程序。
這的確是一個問題,部署;我不會試圖從純粹的TSQL做到這一點。您是否考慮過使用[SQLCMD變量](http://msdn.microsoft.com/zh-cn/library/ms188714.aspx),或者只是編寫一個小型部署腳本,可以對任何服務器/數據庫執行新的DDL腳本你需要?如果您按照您嘗試的方式部署源代碼,那麼管理源代碼將非常困難。 – Pondlife 2013-05-06 15:45:23
CREATE/ALTER PROCEDURE不允許指定數據庫名稱作爲對象名稱的前綴。 – 2013-05-06 16:56:10