2017-05-05 94 views
0

在我的過程中,我正在使用值加載已聲明的變量,然後嘗試將這些變量放入臨時表中。我正在這樣做:將@Var選擇到臨時表中

select cast(@rec_cnt as varchar(5), @tbl_name 
INTO #TEMP_TBL_DUP_CNT 

但是不斷收到msg:'''附近語法不正確。也就是說,當我嘗試執行proc時,列之間的逗號造成問題。這個聲明有什麼問題?

我檢查過臨時表不存在,因爲它不應該存在。

我剛剛運行了一個類似的查詢來將表數據加載到臨時表中,並且工作。我是否可以不直接使用聲明的變量值,如果是的話,我該怎麼辦?

編輯:也想問我該如何查詢這個臨時表。我知道我需要在SP的範圍內完成,我可以將所有結果加載到哪種變量中?我在想,我需要從臨時表中選擇變量然後打印?

感謝

安德魯

+2

算括號。 –

+1

你錯過了關閉'cast'。即''varchar(5)''後面需要''''''。 – Sankar

+0

謝謝,發佈後我才注意到這一點!我還必須將這兩個變量都投射到varchar,因爲它仍在抱怨。 – Andrew

回答

0

試試這個

DECLARE  
    @rec_cnt INT=1, 
    @tbl_name INT=2 

IF OBJECT_ID('tempdb..#TEMP_TBL_DUP_CNT') IS NOT NULL 
    Drop table #TEMP_TBL_DUP_CNT 

CREATE table #TEMP_TBL_DUP_CNT(rec_cnt varchar(5),tbl_name varchar(5)) 
    INSERT INTO #TEMP_TBL_DUP_CNT 
    SELECT cast(@rec_cnt as varchar(5)), @tbl_name 
+0

我在腳本的開始處使用了drop table。對於第一個表,使用INSERT..INTO temp,然後爲每個後續表使用已經創建的select ..into temp。 – Andrew

1

你對你的cast缺少你右括號:

        | 
            v 
select cast(@rec_cnt as varchar(5)), @tbl_name 
INTO #TEMP_TBL_DUP_CNT 
+0

謝謝,發佈後我才注意到這個!我還必須將這兩個變量都投射到varchar,因爲它仍在抱怨。 – Andrew