Программное создание хранимой процедуры

Guest1
Дата: 07.02.2005 06:50:07
При исполнении

marker.cmd.Connection = marker.con;
marker.cmd.CommandText = "USE MNS1 ; "
+" CREATE PROCEDURE ViewMain (@NameOrg varchar(200), @INNOrg char(12)) "
+" AS "
+" IF (@NameOrg = '') and (@INNOrg = '') "
+" begin "
+" select IDCompany, Name, INN from Main order by Name "
+" end "
+" IF (@NameOrg != '') and (@INNOrg = '') "
+" begin "
+" Select IDCompany, Name, INN from Main where Name like '%'+@NameOrg+'%' "
+" end "
+" IF (@NameOrg = '') and (@INNOrg != '') "
+" begin "
+" Select IDCompany, Name, INN from Main where INN Like '%'+@INNOrg+'%' "
+" end ";

marker.cmd.CommandType = CommandType.Text;
marker.con.Open();
marker.cmd.ExecuteNonQuery();
marker.con.Close();

Генерируется исключение что нужно определить переменные
Как можно создать хранимую процедуру
CorwinXX
Дата: 04.03.2005 17:32:30
А если поставить точку прерывания, скопировать текст
marker.cmd.CommandText
и попытаться выполнить его в QueryAnilizer'е, то всё нормально работает?
Alexey Sh
Дата: 05.03.2005 00:10:31
ну если ADO.NET такой дурной, может помочь динамический SQL (sp_executesql)
в этом случае текст процедуры будет внутри строки
кузя
Дата: 05.03.2005 02:57:35
это не ADO.NET дурной.
это, к сожалению, обычное (!!!) неуважение к своим коллегам, типа:

генериуется исключение бл*-бл*-бл* в собственной интерпретации.
вы потрахайтесь, чтобы повторить ситуацию, а результаты сообщите ...

Glory на главном форуме завел, я считаю, отличное правило:
Рекомендации по оформлению сообщений в форуме
5. Сообщайте, пожалуйста, полное оригинальное сообщение об ошибке.

в этом конкретном случае текст ошибки выглядит
'CREATE PROCEDURE' must be the first statement in a query batch.
Must declare the variable '@NameOrg'.
Must declare the variable '@NameOrg'.
Must declare the variable '@NameOrg'.
Must declare the variable '@NameOrg'.
Must declare the variable '@INNOrg'.

а дальше, чтобы ответить на вопрос автора, не нужно моделировать ситуацию - ошибка в составлении запроса к БД очевидна.