2015-09-09 43 views
0

我有一個存儲過程,它以一個表作爲參數。SQL - 表類型/作爲參數傳遞表

例如:我有一個類型PartsImport

CREATE TYPE PartsImport AS TABLE 
(
    Number_Key varchar(10), 
    LogDate smalldatetime, 
    FullName varchar(125), 
    Descrip varchar(250) 
); 

然後該存儲過程發生在此PARAM:

@PTable PartsImport ReadOnly 

存儲過程通過一個簡單的select * from @PTable確實插入到表中,但現在我需要在創建select語句時將此表變量與其他表結合在一起,但我總是會收到錯誤消息

必須聲明標量變量「@PPTable」

你如何選擇從這個@PTable單個列?我試過@PTable.LogDate,但它不喜歡語法。是否可以在連接中使用變量表並選擇列或僅與select *一起使用?

+1

你能告訴我們使用的實際查詢嗎?什麼是@PPTable?並且您是否嘗試過使用別名,例如'FROM @ PTable作爲P,其中P.LogDate ...' – ESG

+0

謝謝!別名工作。 –

回答

1

您可以嘗試使用別名來引用您的表格,而不是變量名稱。例如:

SELECT P.LogDate FROM @PTable AS P 
0

嘗試用下面的例子,當你取列只從表變量,然後工作正常,但當您在使用加入您必須使用別名與表變量名。

CREATE TYPE PartsImport AS TABLE 
(
    Number_Key varchar(10), 
    LogDate smalldatetime, 
    FullName varchar(125), 
    Descrip varchar(250) 
); 

create table PartsImportother (col1 varchar(10), col2 varchar(3)) 
insert into PartsImportother values('1','ads') 


Declare @table PartsImport 
insert into @table(Number_Key,LogDate,FullName,Descrip) values('1','01-01-2015','aaa','adsfadfa') 

-- select [specific column] from [only table variable] 
    select Number_Key from @table 

-- select [specific column] from [table variable with join] 
    select T.Number_Key from @table as T inner join PartsImportother on T.Number_Key = PartsImportother.col1