2015-09-09 3 views
0

У меня есть хранимая процедура, которая принимает в качестве параметра параметр.SQL-таблица Тип/передача таблицы в качестве параметра

Например: У меня есть тип PartsImport:

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

Затем хранимая процедура занимает в этом парах:

@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 
Смежные вопросы