2010-11-07 1 views
1

Так как у SQL Server нет простого исполнятеля командной строки для сценариев, которые автоматически генерируются из студии управления, я создал ее.SQL delphi ado, SQL batch execute

Проблема возникает, когда синтаксис delphi ado и синтаксис SQL Server не согласуются (НО ЕСТЬ ОДИН ВИДЕО).

Хорошо, как, go Я заменил;

Теперь, когда я заявляю, что хранимая процедура изменилась, я ударил кирпичную стену.

Сценарий Я бегу это:

ALTER Procedure [dbo].[procName] 
as 
Declare @param int 

и ошибка я получаю:

аргументы от неправильного типа, из диапазона или сталкиваются друг с другом ,

(мой вольный перевод)

вопросы:

  • почему это происходит?
  • Что я могу сделать, чтобы изменить это?
  • есть еще одна программа на основе udl, которая анализирует SQL-скрипты?

спасибо.

Редактировать: требуется вход в db с файлом udl.

не может быть, что у delphi есть проблемы с @?

+0

Это заявление ALTER PROCEDURE выглядит довольно неполным .... не могли бы вы опубликовать полный скрипт SQL, который вы пытаетесь выполнить там? –

+0

во-первых, я хочу поблагодарить вас за ваше время, к сожалению, это заявление, которое пользователь пытался сделать, когда он сослался на меня с ошибкой. эта инструкция сама успешно работает на студиях sql management. глядя на утверждение, это, безусловно, странно. – none

+0

как насчет doint обертки для sqlcmd, который будет подключать бросок udl-файла и отправить sqlcmd.exe команду sql, ноу-хау, как подключиться к db? – none

ответ

0

удален компонент и изменить код из

ado.open;

в

ado.execute; // или что-то вроде этого

решил.

3

Поскольку SQL Server не имеет простой пакетную командную строку для исполнителя в скрипты сгенерированы автоматически от студии управления, я создал одну.

Знаете ли вы, что SQLCMD ?? Похоже, что утилита командной строки выполняет SQL-скрипты для меня ... также: утилита SQLCMD имеет ряд дополнительных улучшений, выходящих за рамки, которые могут делать сценарии T-SQL в SSMS.

Также проверьте:

+0

спасибо, однако sqlCmd не отвечает требованиям. ИСПОЛЬЗУЙТЕ ПОДКЛЮЧЕНИЕ UDL. так как существует необходимость выбирать SQL-сервер динамически, а затем его проблема, чтобы узнать, что такое имя экземпляра, или что такое метод входа. Соединение udl бесценно. – none

1

Не уверен, что о вашем примере SQL выше, но хранимая процедура на самом деле есть какие-либо параметры, или вы называете переменную внутри тело @param?Обычный синтаксис:

ALTER Procedure [dbo].[procName] 
(<@params here>) 
AS 
<body + variables here> 

MSDN - Alter Procedure

+0

его работает под ms sql sever 2008. проверьте его. его как в c вы скажете int func() {int i;} его законный – none

+1

gotcha, спасибо за это. сегодня узнали что-то новое. –

 Смежные вопросы

  • Нет связанных вопросов^_^