Хранимая процедура с выбором в качестве параметра - PullRequest
0 голосов
/ 11 июня 2018

Я просто хочу задать небольшой вопрос: у меня есть хранимая процедура с именем SP_CARGA_NUEVOS.

Чтобы использовать эту хранимую процедуру, мне нужна строка в следующем формате: 'AD18010611'.

Последние 4 цифры строки - текущий месяц и день, поэтому вместо изменения значения вручную я написал небольшой запрос:

SELECT 
    'AD1801' +  
    CONVERT(VARCHAR(2), GETDATE(), 101) + 
    CONVERT(VARCHAR(2), GETDATE(), 103)

, который возвращает AD18010611

Нокогда я пытаюсь использовать хранимую процедуру, я получаю сообщение об ошибке:

Процедура или функция 'SP_CARGA_NUEVOS' ожидает параметр '@COMENTARIO', который не был предоставлен.

Мой вопрос: есть ли способ отправить выбор в качестве параметра к хранимой процедуре?

Заранее спасибо

Редактировать 1:

Я вызываю SP следующим образом

Exec dbo.SP_CARGA_NUEVOS select 'AD1801'+ convert(varchar(2), GETDATE(), 101) + 
convert(varchar(2), GETDATE(), 103)

Что не работает.

Правильный путь:

Exec dbo.SP_CARGA_NUEVOS 'AD18010611'

Ответы [ 2 ]

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

Вы не можете вызвать хранимую процедуру с выводом запроса напрямую, как вы пытаетесь это сделать здесь.Обратите внимание, что в описании синтаксиса вызова EXECUTE использование параметра определяется как:

    [ [ @parameter = ] { value   
                       | @variable [ OUTPUT ]   
                       | [ DEFAULT ]   
                       }  

Переводя, здесь говорится, что вы можете использовать постоянное значение, переменную или принять значение по умолчанию (если оно есть).).Принятие вывода запроса не вариант.

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

Вы не можете иметь выражения или выбирать в середине EXEC - вам нужно сначала выбрать значение, которое вы хотите использовать в переменной, а затем вызвать свой сохраненныйпроцедура - как это:

DECLARE @Input VARCHAR(20);

SELECT @Input = 'AD1801' +
                CONVERT(VARCHAR(2), GETDATE(), 101) + 
                CONVERT(VARCHAR(2), GETDATE(), 103)

EXEC dbo.SP_CARGA_NUEVOS @Input
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...