Синтаксис хранимой процедуры - PullRequest
1 голос
/ 23 сентября 2008

Моя хранимая процедура вызывается, как показано ниже, из пакета SQL Integartion в SQL Server 2005

EXEC? = Validation.PopulateFaultsFileDetails? , 0

Хотя я не уверен, что? означает

Ответы [ 3 ]

1 голос
/ 23 сентября 2008

Когда вызывается этот SQL-оператор, оба вопросительных знака (?) Будут заменены. Первый будет заменен переменной, которая получит возвращаемое значение хранимой процедуры. Второе будет заменено значением, которое будет передано в хранимую процедуру. Код для использования этого оператора будет выглядеть примерно так (псевдокод):

dim result
SQL = "EXEC ? = Validation.PopulateFaultsFileDetails ? , 0"
SQL.execute(result, 99)    // pass in 99 to the stored proc
debug.print result

Это дает вам 3 преимущества:

  1. вы можете повторно использовать один и тот же бит SQL с разными значениями
  2. вы можете подобрать возвращаемое значение и проверить на успех / ошибку
  3. Если значение, которое вы передаете, является строкой, оно должно быть корректно экранировано для вас, что снижает риск внедрения SQL-инъекций в ваше приложение.
1 голос
/ 23 сентября 2008

? стоит для переменной, если быть точным, параметр. Первый ? является возвращаемым значением сохраненной процедуры, а второй является первым параметром хранимой процедуры

0 голосов
/ 23 сентября 2008

Спасибо, я ценю ответ.

Мне удалось успешно выполнить хранимую процедуру, используя ОБЪЯВИТЬ @FaultsFileName varchar ОБЪЯВИТЬ @FaultsFileID int EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails 'SameMonth Test.txt', @FaultsFileID SELECT @ FaultsFileID

Но когда я передаю входной параметр как «SameMonth Test.txt» в пакете интеграции, я получаю сообщение об ошибке:

Имена параметров не могут быть комбинацией порядкового и именованного типов. ". Возможные причины сбоя: проблемы с запросом, свойство ResultSet установлено неправильно, параметры установлены неправильно или соединение установлено неправильно.

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