好,我已在如果從不同的DATABSE存在Report
以下查詢MS SQL IF語句執行IF和ELSE塊
IF NOT EXISTS (SELECT name
FROM sys.databases
WHERE name = N'Report')
BEGIN
DECLARE @DatabasePath NVARCHAR(1000);
SET @DatabasePath = (SELECT ResultMessage + '\'
FROM [Admin]..[Process]);
EXEC ispCREATEDB N'Report', @DatabasePath, N'10MB', N'20%'
END
ELSE
BEGIN
IF EXISTS (SELECT *
FROM Report.sys.objects
WHERE name = N'FatalErrSumm' AND type = N'U')
BEGIN
DROP TABLE [Report]..[FatalErrSumm];
CREATE TABLE [Report]..[FatalErrSumm]
(
[MDF] NVARCHAR(255) NULL,
[Error] INT NULL,
);
END
END
此檢查;如果它不存在,則創建它,如果它存在,則檢查表FatalErrSumm
是否存在,如果存在,則刪除並重新創建它。
的問題是,它似乎是執行IF NOT EXISTS
塊都possiblities並給予錯誤
Msg 2702, Level 16, State 2, Line 24
Database 'Report' does not exist.
當數據庫Report
不存在。所以它不應該輸入ELSE
塊,但它似乎是。這是非常基本的東西,但我不能爲我的生活發現錯誤,我在這裏做錯了什麼?
謝謝你的時間。
這裏沒有理由使用動態SQL。你爲什麼認爲我應該把它變成動態的?謝謝你的時間。 – MoonKnight 2012-07-20 10:13:46
如果運行代碼時數據庫報告不存在,將會出現錯誤。唯一的方法是使用動態sql繞過它。 – Madhivanan 2012-07-20 10:23:51
有人假定這個代碼存在於一個過程中。 OP談到'一個查詢'不是一個程序。你需要動態的sql,否則不需要它。 – Paul 2012-07-20 14:55:41