2016-11-01 2 views
0

Я получаю синтаксическую ошибку при попытке выполнить функцию таблицы.Как выполнить функцию таблиц в SQL Server

select * from fn_security(select R.rk from dbo.LINK R) 

Ошибка:

Msg 156, Level 15, State 1, Line 1 
Incorrect syntax near the keyword 'select'. 
Msg 102, Level 15, State 1, Line 1 
Incorrect syntax near ')'. 

Что я делаю неправильно? как это выполнить?

ответ

2

Вы не можете пройти всю таблицу, как, кстати, вы пытаетесь now..you может использовать крест применить, чтобы получить все

вы можете попробовать ниже

select * from dbo.LINK r 
cross apply 
dbo. fn_security(r.rk) 
+0

Итак, это означает, что " cross apply 'даст тот же результат, если «fn_security» будет иметь таблицу вместо функции? То есть, например, выберите * from table_security (выберите R.rk из dbo.LINK R) так же, как [с точки зрения получения результатов] выберите * из dbo.LINK r cross apply dbo. fn_security (r.rk) – AskMe

+0

'Вы не можете передать всю таблицу' - как насчет пользовательских типов таблиц? 'Вы можете использовать cross apply' - как насчет внешнего применения? – gotqn

+0

Подумайте о том, что крест применяется как соединение, но вы можете ссылаться на столбцы главной таблицы, поэтому, если ваше соединение дает несколько результатов, то несколько значений – TheGameiswar

Смежные вопросы