Построение динамических столбцов из параметров в Sybase - PullRequest
0 голосов
/ 17 марта 2010

Я пытаюсь написать хранимую процедуру (SP) в Sybase.

SP принимает 5 параметров varchar.

На основе переданных параметров я хочу создать имена столбцов, которые будут выбраны из конкретной таблицы.

Работы ниже:

ОБЪЯВИТЬ @TEST VARCHAR (50) SELECT @TEST = "страна" --print @ TEST

execute ("ВЫБЕРИТЕ DISTINCT id_country AS id_level, Страна 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 ГДЕ tbl_ch2_bespoke_report.id_report = 14 ")

но дает несколько результатов:

1 1 ряд (ы) затронут.

id_level    nm_level       

1 4376 XYZ
2 4340 ABC

Я хотел бы, однако, только получить второй результат.

Нужно ли обязательно использовать динамический SQL для достижения этой цели?

Большое спасибо за вашу помощь.

- Chapax

Ответы [ 2 ]

0 голосов
/ 16 января 2011
  1. SET NOCOUNT {ON|OFF} для отключения сообщений о количестве строк.

  2. Да, вам необходим динамический SQL для изменения структуры или содержимого набора результатов (либо списка столбцов, либо предложения WHERE).

0 голосов
/ 19 марта 2010

Если я правильно вас понимаю, вы бы хотели исключить "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
...