2017-07-25 89 views
1

我希望能夠通過選擇它並按F5運行我的SQL查詢片段。問題是,如果該選擇包含變量名稱,則會出現錯誤:Must declare the scalar variable "@variableName".。無論如何要解決這個問題嗎?我想variableName是其價值,否則將有我運行在那個時刻,我已經選擇了整個語句...如何運行包含變量的選定SQL查詢?

樣品的全碼:

DECLARE @cat INT; 

SET @cat = 2; 

SELECT * FROM TableName 
WHERE ColumnName = @cat; 

我選擇的樣品我想運行時不包括聲明/設置線:

SELECT * FROM TableName 
WHERE ColumnName = @cat; 

可能不可能,但我覺得它值得一試。

P.S.我是一個SQL noobie,所以如果我失去了一些明顯的東西讓我知道!

+0

發佈查詢..當在查詢中使用變量時,那麼'declare'語句應該是執行的一部分,否則你會得到那個錯誤... –

+0

@Pரதீப்我不能爲了保密原因,抱歉。我可以替換名稱和東西,但代碼很長,這將永遠..呃我可以嘗試一個例子1秒。 –

+0

只包含在實際查詢之前和之後定義/初始化變量的代碼。然後F5整個事情在一起。 –

回答

1

我明白你來自哪裏。這是一個很長的過程或一些東西的片段,當然你想保留在頂端的聲明,我同意這一點。在這種情況下,當您測試時,解決此問題的唯一方法是重新聲明它並將其設置在代碼片段的頂部。然後,當你運行整批代碼時只需註釋掉這一行。否則,你必須將代碼片段包裝在try/catch塊中,以便捕捉編譯錯誤,這很棘手。

此外,這通常是我看到人們從someWorkTable中選擇*來測試結果的方式。然後它在批處理運行時被註釋掉。

0

左鍵單擊表名,右鍵單擊設計,即可查看列名的數據類型。 如果是nvarchar的..

DECLARE @cat INT; 
SET @cat = 2; 
Convert(varchar, @cat) 

SELECT * FROM TableName 
WHERE ColumnName = @cat; 

OR

直接申報

DECLARE @Cat VARCHAR(3) 
SET @cat = '2' 
SELECT * FROM TableName 
WHERE ColumnName = @cat; 

希望這有助於

0

在與別名結果選擇查詢宣佈你可以模擬你的變量。然後,你可以只使用alias.column作爲您的加入一部分... ...

SELECT 
     TN.* 
    FROM 
     (select '2' as TmpColumn) tmpAlias 
     JOIN TableName TN 
      on tmpAlias.TmpColumn = TN.ColumnName 

這樣,沒有「標」變量是必需的,但不是實際的,因爲一個簡單的參數化查詢使用直接WHERE子句。此外,如果您有其他表關係等,或者甚至想要在查詢中應用其他「變量」,則可以使用別名.column。