2016-11-28 12 views
0

以下の動的SQLを使用してカーソルを宣言したいが、ストアドプロシージャでコンパイルしようとすると、以下のSQLが失敗する。これを行うより良い方法はありますか?ありがとう。動的SQLを使用してカーソルを宣言する方法は?

DECLARE selrec CURSOR FOR 
SELECT DISTINCT countrycode FROM @InputTableName; 

エラーメッセージ: -

Must declare the table variable "@InputTableName". 

PS: - 私は、変数名を宣言しても、私は、カーソルを作成する前に値を設定しています。一例として、

+1

「動的SQL」が何であるか混乱していると思います – Lamak

+2

問題はカーソルそのものではありません。テーブル*変数*はローカルスコープに制限されています。テンポラリテーブルなどを使用する必要があります。 –

答えて

0

declare 

    var1 varchar2(100); 
    table1 varchar2(30); 
    x  integer; 

begin 

    if x = 1 
    then 
     table1 := 'tablename1'; 

    else 
     table1 := 'tablename2' 
    end if; 

    var1 := 'select * from '||table1; 

    execute immediate var1; 

end; 
0

これは、(この2つのテーブルとデシベルで)私のため正常に動作します:あなたは(

の下でどのようなSQLマシンを

declare @i1 int=5 
declare @a1 varchar(1000) 
set @a1='select top 5 * from ' 
if (@i1 > 4) 
begin 
    set @a1 = @a1 + ' [dbo].[dts_source]' 

end 
else 
begin 

    set @a1 = @a1 + ' [dbo].[dts_references]' 
end 
select @a1 
exec (@a1) 

実行されています

即時実行

はSQL Server構文ではありません)?

関連する問題