0

Sybase でストアド プロシージャ (SP) を作成しようとしています。

SP は 5 つの varchar パラメータを取ります。

渡されたパラメーターに基づいて、特定のテーブルから選択される列名を作成したいと考えています。

以下は動作します:

DECLARE @TEST VARCHAR(50) SELECT @TEST = "国" --print @TEST

execute("SELECT DISTINCT id_country AS id_level, Country AS nm_level FROM tempdb..tbl_books INNER JOIN (tbl_ch2_bespoke_report INNER JOIN tbl_ch2_bespoke_rpt_mapping ON tbl_ch2_bespoke_report.id_report = tbl_ch2_bespoke_rpt_mapping.id_report) ON id_" + @TEST + "= tbl_ch2_bespoke_rpt_mapping.id_pnl_level WHERE tbl_ch2_bespoke_report.id_report = 14")

しかし、複数の結果が得られます:

1 1 行が影響を受けました。

id_level    nm_level       

1 43​​76 XYZ
2 4340 ABC

ただし、2番目の結果のみを取得したいと思います。

これを実現するために動的 SQLを使用する必要がありますか?

助けてくれて本当にありがとうございます。

--チャパックス

4

2 に答える 2

0

私の理解が正しければ、「影響を受ける 1 行」を削除してください。ライン。その場合は、「set nocount on/off」オプションでうまくいくはずです:

declare @something int
declare @query varchar(2000)
set nocount  on
select @something=30
select @query = "SELECT * FROM a_table where id_row = " + convert(varchar(10),@something) 
set nocount  off
exec (@query)

また

declare @something int
declare @query varchar(2000)
set nocount  on
select @something=30
set nocount  off
SELECT * FROM a_table where id_row = @something
于 2010-03-19T17:47:29.617 に答える
0
  1. SET NOCOUNT {ON|OFF}行数メッセージをオフにします。

  2. はい、結果セットの構造または内容 (列リストまたはWHERE句) を変更するには、動的 SQL が必要です。

于 2011-01-15T23:24:32.943 に答える