私の要件に応じて関数を作成しようとしています。ユーザ定義関数に一時テーブルを作成、削除、挿入する
しかし、作成または#tempTable
を落としていたときのように、それはエラーを与えている:私の理解がある
関数内で副作用演算子「ドロップオブジェクトの無効な使用
関数内でcreate
,drop
またはinsert
の演算を#temptable
に設定することはできません。
これは間違いありませんか?
マイSQL:正しい
CREATE FUNCTION [dbo].[RT_ResultFunction]
(
Id VARCHAR(4000)
)
RETURNS @RT_ResultFunction TABLE
(
Id VARCHAR(20)
, Name varchar(20)
,Balance Int
)
AS
BEGIN
IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL
DROP TABLE #tempTable
SELECT Id, COUNT(Balance)
INTO #tempTable
'Balance' FROM Table1
INSERT @RT_ResultFunction
SELECT T1.ID,T1,NAME,T2,Balance
FROM Table2 T1,
#tempTable T2
WHERE T1.ID = T2.ID
RETURN
END
ビットはあなたのSQLについて混乱します。 #tempTableからドロップダウンした後に選択する方法 - 決して再作成されません。 –
更新された投稿 –
を探してください。この問題を解決するには、関数内の#temptableのポイントを説明してください。また、Idパラメータを使って何をするか。 –