我正在尝试在Sybase中编写存储过程(SP)。
SP需要5个varchar参数。
根据传递的参数,我想构建要从特定表中选择的列名。
以下作品:
DECLARE @TEST VARCHAR(50) SELECT @TEST =“country” --print @TEST
执行(“SELECT DISTINCT id_country AS id_level,Country AS nm_level 来自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 在哪里tbl_ch2_bespoke_report.id_report = 14“)
但给了我多个结果:
1 1行受影响。
id_level nm_level
1 4376 XYZ
2 4340 ABC
我想仅获得第二个结果。
我是否需要使用动态SQL 来实现此目标?
非常感谢你的帮助。
- Chapax
答案 0 :(得分: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
答案 1 :(得分:0)
SET NOCOUNT {ON|OFF}
关闭行计数消息。
是的,您需要动态SQL来更改结果集的结构或内容(列列表或WHERE
子句)。