从Sybase中的参数构造动态列

时间:2010-03-17 15:01:01

标签: sybase-ase

我正在尝试在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

2 个答案:

答案 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)

  1. SET NOCOUNT {ON|OFF}关闭行计数消息。

  2. 是的,您需要动态SQL来更改结果集的结构或内容(列列表或WHERE子句)。