我必須實現一個模塊,該模塊需要一些變量聲明作爲參數。我必須找到驗證這些變量的方法,以便我沒有預先定義它們。查找是否定義了變量
例
declare @var int
set @var = 1
if isdeclared(@var) == 0
begin
declare @var int
print @var
end
print @var
我必須實現一個模塊,該模塊需要一些變量聲明作爲參數。我必須找到驗證這些變量的方法,以便我沒有預先定義它們。查找是否定義了變量
例
declare @var int
set @var = 1
if isdeclared(@var) == 0
begin
declare @var int
print @var
end
print @var
SQL Server分析變量聲明代碼它執行代碼之前。
該代碼會工作得很好
if 1 = 0
begin
declare @var int
print @var
end
print @var
變量是即使永遠不會執行該聲明變量的代碼申報。
你可能想要做的是測試變量是否被賦值。
if 1 = 0
begin
declare @var int
set @var = 1
print @var
end
if @var is null
begin
set @var = 2
end
print @var
我不能完全肯定你的module
的意思,但如果你創建一個存儲過程,你可以肯定在該範圍存在哪些變數。
CREATE PROCEDURE myStoredProcedure (@var1 AS INT = NULL, @var2 AS INT = NULL)
AS
BEGIN
DECLARE @var3 INT
IF (@var1 IS NULL)
SET @var3 = 'Nothing was passed in for @var1'
IF (@var1 IS NULL AND @var2 IS NULL)
SET @var3 = @var3 + ', '
IF (@var2 IS NULL)
SET @var3 = @var3 + 'Nothing was passed in for @var2'
SELECT
@var1, @var2, @var3
END
即使參數是可選的,它們仍然是decalred並且具有默認值(在這種情況下爲NULL)。所以,你不需要檢查聲明,只需要檢查值。
你不能Complie
或Run
在Sql Server Management Studio
的Sql語句。
說,在JS
你可以編譯/執行代碼塊有一個未聲明的變量,並可以檢查變量是否聲明或不使用typedef
,但在Sql Server中是不可能的,直到當前版本。謝謝你的時間。
我想你需要給出一些更詳細的信息,說明你爲什麼需要這樣做,以及你如何傳遞你提到的「參數」。聲明一個變量兩次是一個編譯錯誤,所以你不能在運行時捕獲它。 – Pondlife