2012-03-23 8 views
17

明らかに、私はそれらを使用することはできません。私はこのような何かをしたい場合は一時テーブルを関数に含めることはできますか?

副作用演算子の使用が無効です。関数内

を「SELECT」:私のようなエラーメッセージが出てい

select bleh 
    into #temp 
    from Blah 

...機能の中にあります。

+2

代わりにテーブル変数を使用できます。 –

答えて

25

いいえ、this thread where the same question was asked PER、あなたがすることはできませんが、あなたはまた、CTEでそれを行うことができますtable variable

DECLARE @MyTempTableVariable TABLE (SCHEMA) 

INSERT INTO @MyTempTableVariable 
SELECT bleh 
FROM bleh 
+0

カーディナリティエラーは、SQL DB関数内のテーブル変数を一時テーブルに置き換えたい最大の理由です。ただし、この問題の回避策は、http://blogs.msdn.com/b/blogdoezequiel/archive/2012/12/01/table-variables-and-row-estimations.aspx#.VGC5oMnm7HSで詳しく説明しています。 テーブル変数を使用するステートメントにOPTION(RECOMPILE)を追加すると、パフォーマンスが向上する可能性があります。 – Vladislav

1

を使用することができます。 SSMSのテンプレートブラウザを参照してください。 IntelliSenseは問題を混乱させ、CTEと次の挿入/選択を完了するまでエラーを表示しますが、正常に動作します。

+0

これは答えではなく、コメントであったはずです。 –

+0

@モハマドババ:私は同意しない。これは、他の答えに非常に有効な代替手段を追加します。 – davidhigh

+2

@Lew Wolf:例やコードの一部が良いでしょう。 – davidhigh

関連する問題