Я работаю над запросом и создал функцию для извлечения результата из таблицы outcomes
, содержащей следующий код.Объявить переменную таблицы в UDF, чтобы ввести имя таблицы в качестве параметра
CREATE FUNCTION dbo.Shippad (@tbl NVARCHAR(30))
RETURNS TABLE
AS
RETURN
SELECT LEFT(ship, Charindex(' ', ship) - 1) + ' '
+ Replicate('*', Charindex(' ', Substring(ship, Charindex(' ', ship) + 1, Len(ship))) + 1 -2)
+ ' '
+ Reverse(LEFT(Reverse(ship), Charindex(' ', Reverse(ship)) - 1)) as final_work
FROM outcomes
WHERE Charindex(' ', Substring(ship, Charindex(' ', ship) + 1, Len(ship))) > 1
Проблема приведенного выше кода является то, что это не имеет значения, какой параметр я вошел во время выполнения, он всегда дает результат, пока в качестве параметра я введено правильное имя таблицы в базе данных.
Сейчас я задаюсь вопросом, могу ли я создать параметр для ввода имени таблицы в FROM
, так, только когда я введу outcomes
, он отобразил бы результат.
Я попытался объявить переменную таблицы, используя следующий код:
declare @ship_outcome table
( final_work nvarchar(30)
)
insert into @ship_outcome (final_work)
select
left(ship, charindex(' ', ship) - 1) + ' ' +
replicate('*', charindex(' ', substring(ship, charindex(' ', ship) + 1, len(ship))) + 1 -2) + ' ' +
reverse(left(reverse(ship), charindex(' ', reverse(ship)) - 1))
from outcomes
where charindex(' ', substring(ship, charindex(' ', ship) + 1, len(ship))) > 1;
select * from @ship_outcome
Однако я не уверен, как консолидировать табличную переменную в ОДС. Пожалуйста помоги.
Непонятно. Вы хотите получить результат, только когда '@tbl = results'? –
добавить в предложение WHERE 'AND @tbl = 'results'' – Squirrel
В этом случае я предлагаю вам не вызывать эту функцию самостоятельно –