【问题标题】:How to do a firebird SP, SELECT * FROM "TABLE"?如何做一个火鸟SP,从“表”中选择*?
【发布时间】:2009-11-23 13:58:07
【问题描述】:

我正在从 SQL Server 迁移到 Firebird。

在 SQL Server 中

CREATE PROCEDURE Departments_GetAll
AS
    SELECT * FROM Departments

我在 Firebird 中尝试

CREATE PROCEDURE DEPARTMENTS_DELETEALL
AS 
BEGIN
  SELECT * FROM "Departments";
END^

SET TERM ; ^

但这不起作用。

返回错误“SQL代码-104”

【问题讨论】:

  • 建议:不要在标识符中使用引号,除非您真正了解它的作用以及为什么需要它。

标签: sql stored-procedures select firebird


【解决方案1】:

存储过程需要返回参数和suspend 命令才能返回多行。

CREATE PROCEDURE DEPARTMENTS_GET_ALL
returns(id integer, name varchar(100))
AS 
BEGIN
  FOR SELECT id, name
  FROM "Departments"
  into :id, :name do
  BEGIN
    SUSPEND;
  END
END^

SET TERM ; ^

【讨论】:

  • 如果我有 'n' (10) 列数,那么我应该单独提及所有这些列吗?这种情况有其他解决方案吗?
猜你喜欢
  • 2019-08-01
  • 2014-10-20
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多