クエリを処理していて、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
部分にテーブル名を入力するためのパラメータを作成できるかどうかは疑問です。結果が表示されます。
私は、次のコードを使用して、テーブル変数を宣言しようとした:私はUDFにテーブル変数を統合するかどうかはわからないが
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 = outcomes'のときだけ結果を得たいですか? –
'WHERE '節に' AND @tbl =' outcomes''を追加する – Squirrel
この場合、この関数自体を呼び出さないようにします。 –