Выбор скалярного значения в хранимой процедуре Firebird - PullRequest
0 голосов
/ 15 февраля 2010

Я бы хотел получить идентификатор конкретной строки из хранимой процедуры Firebird 2.1. Я не могу вспомнить синтаксис, и это сводит меня с ума.

Так может выглядеть код в TSQL, используемом Microsoft SQL Server.

    @ID = SELECT ID FROM ADDRESS WHERE 
      POBox = :POBOX AND
      ExtendedAddress = :EXTENDEDADDRESS AND
      StreetAddress = :STREETADDRESS AND
      Locality = :LOCALITY AND
      Region = :REGION AND
      PostalCode = :POSTALCODE AND
      CountryName = :COUNTRYNAME;

Что такое эквивалент Firebird?

ОБНОВЛЕНИЕ : руководство по миграции SQL Firebird предполагает, что это должно работать

    SELECT ID INTO :ID FROM ADDRESS WHERE 
      POBox = :POBOX AND
      ExtendedAddress = :EXTENDEDADDRESS AND
      StreetAddress = :STREETADDRESS AND
      Locality = :LOCALITY AND
      Region = :REGION AND
      PostalCode = :POSTALCODE AND
      CountryName = :COUNTRYNAME;

Но я получаю синтаксическую ошибку в "INTO", когда пытаюсь создать сохраненный процесс.

1 Ответ

4 голосов
/ 15 февраля 2010

Очевидно, что руководство по миграции Firebird неверно. Этот синтаксис работал для меня:

SELECT ID FROM ADDRESS WHERE 
   POBox = :POBOX AND
   ExtendedAddress = :EXTENDEDADDRESS AND
   StreetAddress = :STREETADDRESS AND
   Locality = :LOCALITY AND
   Region = :REGION AND
   PostalCode = :POSTALCODE AND
   CountryName = :COUNTRYNAME
INTO :ID;

Обратите внимание, что предложение INTO должно следовать после предложений FROM и WHERE.

...