Получите удовольствие от t-sql
и sp_executesql
(тестовый вывод ниже). Последней частью головоломки было то, что для sp_executesql
нужно прописные буквы N
для параметров запроса и определения.
У меня такое ощущение, что проблема с использованием входного параметра @cardcodeParm
.
Как видите, первые два снимка работают. Третий работает, но ничего не возвращается.
5> execute sp_executesql N'select cardcode, cardname from dbo.ocrd where @dummy = @dummy and cardcode = ''BTG000'' ', N' @dummy int ', @dummy = 1
6> go
cardcode cardname
--------------- ----------------------------------------
BTG000 HUGRO GmbH
(1 rows affected)
1> execute sp_executesql N'select cardcode, cardname from dbo.ocrd where @dummy = @dummy and cardcode = ''BTG000'' ', N' @dummy nvarchar(5) ', @dummy = '1'
2> go
cardcode cardname
--------------- ----------------------------------------
BTG000 HUGRO GmbH
(1 rows affected)
1> execute sp_executesql N'select cardcode, cardname from dbo.ocrd where cardcode = ''@cardcodeParm'' ',
2> N' @cardcodeParm nvarchar(100) ', @cardcodeParm = 'BTG000';
3> go
cardcode cardname
--------------- ----------------------------------------
Я нахожусь на кривой обучения с t-sql, используя sql server 2005 с клиентским доступом sqlcmd.