【发布时间】:2010-07-05 08:02:17
【问题描述】:
我有一个脚本可以为我的网络应用程序的新版本更新我的数据库。在此更新中,我需要更改存储过程。我有一个 ALTER PROCEDURE 脚本,它在单独运行时工作正常,但是当我将它放入我的更新脚本并运行它时,我收到错误“关键字'PROCEDURE'附近的语法不正确”。和“必须声明标量变量“@age”。”我在这里做错了什么?脚本如下:
BEGIN TRY
BEGIN TRANSACTION
-- ==================================================================
-- v0.1 to v0.2
-- ==================================================================
IF EXISTS
(
SELECT * FROM SystemParameters WHERE Name = 'Version' AND Value = '0.1'
)
BEGIN
-- ==============================================================
-- Changed Stored Procedures
-- ==============================================================
ALTER PROCEDURE ClearCache
@age int = 120
AS
BEGIN
DECLARE @timestamp DATETIME
SELECT @timestamp = DATEADD(MINUTE, -@age, GETDATE())
-- Clear old searches
END
-- ==============================================================
-- Update the Version Number
-- ==============================================================
UPDATE SystemParameters SET Value = '0.2' WHERE Name = 'Version'
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
-- Report the Error
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)
END CATCH
任何帮助将不胜感激:)
【问题讨论】:
标签: sql sql-server stored-procedures syntax