Доброе утро. Я ОЧЕНЬ новичок в SQL и проблема с хранимыми процедурами. Во-первых, я использую SQL 2008, я не знаю, имеет ли это значение. Итак, вот моя проблема. Я называю хранимая процедура, 2 раза подряд с различными значениями передается в. (Кстати, я только добавил with recompile
часть. Это не поможет)Сохраненная процедура - получение ошибки при втором вызове
EXECUTE crstored.sp_hhcAllActivityInstreamLoop
@measureVarIDName ='staticPayact6moID'
,@measureSuppVarIDName ='payact6moID'
,@measureDesc ='payact6moDesc'
,@measureSuppTable ='crsupp.payact6mo'
WITH RECOMPILE;
GO
EXECUTE crstored.sp_hhcAllActivityInstreamLoop
@measureVarIDName ='staticJourneyID'
,@measureSuppVarIDName ='journeyID'
,@measureDesc ='journeyDesc'
,@measureSuppTable ='crsupp.journey'
WITH RECOMPILE;
GO
В первый раз я называть его, он будет запустить. Второй раз, когда я получаю следующее:
Msg 207, Level 16, State 1, Line 20 Недопустимое имя столбца 'staticJourneyID'. Msg 207, уровень 16, состояние 1, строка 20 Недопустимый столбец имя 'staticJourneyID'.
Чтобы исправить это, я удаляю хранимую процедуру. Перекомпилируйте его на полпути, поэтому он ничего не делает, кроме как вводит параметры и делает простой выбор с одним из параметров. Запустить его. Удалите хранимую процедуру. Перекомпилируйте полную процедуру. Затем я могу запустить его для второго вызова. Однако теперь он настроен только на запуск JourneyID, и если мне нужно вернуться и вызвать его для переменных payAct6mos, я должен выполнить один и тот же сценарий удаления, перекомпиляции и запуска. У кого-нибудь есть предложения? Единственное, о чем я могу думать сейчас, это иметь две копии одного и того же кода с разными именами. Мне было бы неловко поддерживать это.
Кроме того, я не знаю, если это имеет значение, но из-за того, как я использую параметры, мне сказали, чтобы вложить свой код в хранимых процедурах с:
select @[email protected]+' type line of code here '
Спасибо!
Просто последующий вопрос по моей проблеме. Я понял. Как я уже сказал, я просто новичок в SQL. Итак, получается, что таблицы, которые я отбрасывал, я отбрасывал с помощью динамического SQL в SP. Как только я сбросил их с помощью «обычного» SQL, вызовы прекратились. Я не знаю, почему это так, но там у вас это есть. Спасибо за помощь каждого.
показать нам код хранимой процедуры. – RBarryYoung
Итак, я не могу опубликовать SP, потому что слишком много символов. – user2370154