Это мой пример sql-запроса в хранимой процедуре, которая работает нормально. Но я хочу, чтобы передать значения концессии, что здесь «TH-003853199» и имя таблицы динамически ..ошибка в хранимой процедуре
SELECT @source = source,@stage = stage
FROM BABMwork8_22_1210_0012.dbo.concessions
WHERE concession = 'TH-003853199'
и хранимая процедура, EDIT в запросе
ALTER PROCEDURE status_in_other_db
@other_db VARCHAR(50),
@concession VARCHAR(30)
AS
BEGIN
SET NOCOUNT ON
DECLARE @query VARCHAR(8000),
@other_db_con VARCHAR(80),
@source VARCHAR(10),
@stage VARCHAR(50),
@status_in_other_db VARCHAR(50)
SET @other_db_con = @other_db + '.dbo.concessions' ;
SET @query = ('SELECT @source = source,@stage = stage FROM ' + @other_db_con + ' WHERE concession = '''[email protected]+''' ')
EXEC(@query)
IF(@source!='PARK')
BEGIN
SET @status_in_other_db =
CASE @stage
WHEN 'Open' THEN 'Open'
WHEN 'Archive' THEN 'Archived'
WHEN 'R4invoicing' THEN 'Ready for invoicing'
WHEN 'N2Bdetermined' THEN'SplitBA'
WHEN 'Invoiced' THEN 'Invoiced'
WHEN 'Exclusion' THEN'Exclusion'
END
END
ELSE IF(@source='PARK')
SET @status_in_other_db = 'PARK'
ELSE IF(@source='')
SET @status_in_other_db = 'Not present'
SELECT @status_in_other_db as status_in_other_db
END
Здесь я хочу вернуть значение @status_in_other_db обратно, что должно быть моим выходным параметром.
При выполнении этой хранимой процедуры я получаю ошибку: - должна быть объявлена скалярная переменная @source.
Eventhough я изменен так, теперь я не получаю сообщение об ошибке, ни результаты ...
SET @query = 'DECLARE @source VARCHAR(10), @stage VARCHAR(50) '
SET @query = @query + 'SELECT @source = source,@stage = stage
FROM BABMwork8_22_1210_0012.dbo.concessions
WHERE concession = ''TH-003853199'' '
пожалуйста, помогите мне
+1, Thanku verymuch. Это работало как шарм. Я также благодарен за поэтапную процедуру :-) – satya