Sql-Server
如果 T-SQL 變數已經存在,如何重新聲明它?
背景:
我正在建構一個要在伺服器上執行的 SQL 命令,該命令涉及大量訪問儲存過程和聲明用作其他儲存過程輸入的變數。這都是在客戶端使用 C# 生成的,並作為一個大包發送。我必須這樣做,因為 ping 時間很長,因為客戶端將位於非常偏遠的地方,連接不良,我不想發送很多包並開始積壓,因為響應時間很長。
目前不超過三個客戶端可以並行工作,或者他們開始建立積壓,因為大約 200 個儲存過程的一個事務的傳輸速度大約需要 35 秒。
題:
如果它已經存在,我如何聲明一個我現在不存在的變數?我可以在 C# 端使用字典,但這聽起來對我來說是錯誤的方法。我想要一個接受重新聲明該變數(如果它確實存在)的聲明。
您不能重新聲明變數,也不能測試它們是否已被聲明(至少我無法找到)。但是,無論如何你都不應該這樣做。如果您提前知道變數名稱,只需在流程開始時將它們全部聲明。然後,在整個腳本中使用它們。
例如:
-------------------------------- -- BEGIN script header -------------------------------- DECLARE @SomeVariable1 INT, @SomeVariable2 VARCHAR(50), ....; SomeVariableN DATETIME; -------------------------------- -- END script header --------------------------------
然後添加 1 個或多個使用這些變數的腳本塊:
---- Script Block 1 --- EXEC dbo.MyProc @InputParam = 1, @OutputParam = @SomeVariable1 OUTPUT; ----------------------- ---- Script Block 2 --- EXEC dbo.AnotherProc @InputParam = @SomeVariable1; ----------------------- ---- Script Block 3 --- SET @SomeVariable2 = NULL; -- reset value if you don't want to carry over prior value ..do something here... -----------------------