Как получить результат таблицы из процедуры магазина? - PullRequest
0 голосов
/ 05 июня 2018

Я попытался написать процедуру сохранения с некоторой проверкой условий внутри синтаксиса Where.

Но он показывает только состояние запроса, а не результат.

Может ли какой-либо орган помочь решить эту проблему.

Пожалуйста, найдите запрос

declare @query varchar(200)
declare @option varchar(10) = 'A'
set @query ='select * from TableName'+
(case when @query = ''
then
'where ColumnName = 1 '
end)
execute sp_sqlexec @query

Ответы [ 4 ]

0 голосов
/ 05 июня 2018
declare     @query  nvarchar(max)
        ,   @option varchar(10)     = 'A';

set @query = N'select * from TableName '
           + CASE WHEN @option IS NOT NULL
                THEN N' where ColumnName = 1 ' ELSE N'' END

execute sp_executesql @query;

Избегайте использования sp_sqlexec, оно очень старое и больше не поддерживается, вместо этого используйте sp_executesql.

0 голосов
/ 05 июня 2018

Вы можете попробовать вот так:

declare @query varchar(200)

declare @option varchar(10) = 'A'

set @query ='select * from TableName '

if @option ='A'
   set @query = @query + ' where ColumnName = 1 '

--print @query

execute sp_sqlexec @query
0 голосов
/ 05 июня 2018

Ваш запрос должен быть

declare @query varchar(200)
declare @option varchar(10) ='A'
declare @search as int=1 

select @query ='select * from TableName '+
case when @option ='A'
then
' where ColumnName = '+ cast(@search as varchar(200))
else ''
end
execute sp_sqlexec @query

см. Демонстрацию

0 голосов
/ 05 июня 2018

То, что я могу видеть наверняка, это недостаток места до того, как условие.

declare @query varchar(200)
declare @option varchar(10) = 'A'
set @query ='select * from TableName'+
(case when @query = ''
then
' where ColumnName = 1 '
end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...