1

いくつかの変数を宣言して設定しました。次に、ストアド プロシージャを実行する際に、その変数値をパラメーターとして使用したいと考えています。しかし、私はいつもエラーが発生します

スカラー変数を宣言する必要があります。

ここに私の変数があります:

--declare variables for parameter @listweek
declare @tgl_other varchar(50);

--set variables for parameter @listweekset 
set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);

--the variable values should be like this 30-(01-03-2012 - 08-03-2012) 
--and this value that I want to use as parameter value in executing stored procedure

これは実行中のストアド プロシージャです。

insert into my_table (field1, field2, field3)
EXEC my_store_procedure @tgl_other
-- the parameter for my_store_procedure is like '30-(01-03-2012 - 08-03-2012)'

私の変数が正しくありませんか?または、パラメーターに変数を使用する方法が間違っていますか?

アップデート:

このクエリを実行すると:

declare @tgl_other varchar(50);
set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);
EXEC my_store_procedure @tgl_other

正常に動作しますが、ステートメントを追加INSERT INTO..すると動作しません。なぜそれが起こるのですか?


更新 II: 実行しようとするクエリ全体を次に示します。

declare @tgl_other varchar(50);
set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);
TRUNCATE TABLE mytable
GO
INSERT INTO mytable (field1, field2)    
EXEC my_store_procedure @tgl_other
GO
4

1 に答える 1

5

変数の宣言とストアド プロシージャの実行の呼び出しの間にGOどこかありますか? 変数はスコープ内でのみ表示されます - そこに GO があると、前のバッチ/スコープが終了し、新しいバッチ/スコープが開始されます - その新しいバッチ/スコープでは、変数はもう表示/宣言されていません..

代わりにこれを試してください:

declare @tgl_other varchar(50);

set @tgl_other = (select top 1 ltrim(rtrim(cast(numweek as char)))+'-('+rangeweek+')' from tbl_weeklyflash where year(dates) = year(getdate()) order by numweek desc);

TRUNCATE TABLE mytable

-- GO     remove this GO to make it work!

INSERT INTO mytable (field1, field2)    
EXEC my_store_procedure @tgl_other
GO
于 2012-07-31T07:16:35.683 に答える