我需要在Firebird 2.5中编写存储过程。我写这个SQL查询:从选择查询创建过程
INSERT INTO A_OBRATYKUMHIST(OBRAT, MONTH, YEAR, SECURITYUSER_ID, FIRM_ID)
select
sum(AO.Obrat), 11, 2010, AO.SecurityUser_ID, AO.Firm_ID
from A_OBRATYKUMHIST_TEMP AO
where
AO.Rok = 2010
and AO.Mesic <= 11
group by
AO.SecurityUser_ID, AO.Firm_ID;
我的目标是填充表与累计和。
编辑1:
所以我写了这一点:
SET TERM^;
CREATE OR ALTER PROCEDURE A_TESTIK (
start_year integer,
end_year integer)
returns (
obrat integer,
mesic integer,
rok integer)
as
declare variable "YEAR" integer = 2005;
declare variable "MONTH" integer = 1;
begin
select
sum(II.localamountwithoutvat), ib_decodedate_month(VatDate$DATE),
ib_decodedate_month(VatDate$DATE)
from IssuedInvoices II
group by
ib_decodedate_month(VatDate$DATE), ib_decodedate_month(VatDate$DATE)
into :obrat, :mesic, :rok;
suspend;
end^
SET TERM ;^
/* Following GRANT statetements are generated automatically */
GRANT SELECT ON ISSUEDINVOICES TO PROCEDURE A_TESTIK;
/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE A_TESTIK TO SYSDBA;
但是当我运行它,我得到错误:"Multiple rows in singleton select"
。我该如何解决它?
阅读材料:Interbase的6.0语言参考] (http://www.ibphoenix.com/files/60LangRef.zip)(特别是第3章程序和触发器)和[Firebird 2.5语言参考更新](http://www.firebirdsql.org/file/documentation/reference_manuals/参考, nce_material/html/langrefupd25.html) –
如果这没有帮助,请更具体地说明你想知道的内容。 –
@Mihai 有用的评论 – Sk1X1