【问题标题】:Selecting a scalar value in a Firebird stored procedure在 Firebird 存储过程中选择标量值
【发布时间】:2010-02-15 15:44:36
【问题描述】:

我想从 Firebird 2.1 存储过程中获取特定行的 ID。我似乎不记得语法了,这让我发疯了。

这是代码在 Microsoft SQL Server 使用的 TSQL 中的外观。

    @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 等价物是什么?

更新Firebird SQL migration guide 表明这应该可以工作

    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”出现语法错误。

【问题讨论】:

  • 对于后人,什么版本的FB?
  • 我使用的是 Firebird 2.1 和 2.5。我会更新问题以反映这一点。

标签: sql select firebird


【解决方案1】:

显然,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 子句必须FROMWHERE 子句之后。

【讨论】:

  • 你是对的,@mghie!愚蠢的剪切和粘贴错误。我已经更正了我的答案。
猜你喜欢
  • 1970-01-01
  • 2011-09-12
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多