0

我正在尝试在 Sybase 中编写存储过程 (SP)。

SP 采用 5 个 varchar 参数。

根据传递的参数,我想构造要从特定表中选择的列名。

以下作品:

DECLARE @TEST VARCHAR(50) SELECT @TEST = "country" --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

但是,我只想获得第二个结果。

我是否需要使用动态 SQL来实现这一点?

非常感谢您的帮助。

--Chapax

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. 是的,您需要动态 SQL 来更改结果集的结构或内容(列列表或WHERE子句)。

于 2011-01-15T23:24:32.943 回答