【发布时间】:2018-07-13 19:37:54
【问题描述】:
我正在使用具有存储过程的 firebird 数据库 2.5。当我运行它时,它会询问我三个参数(FITEMNO、FDATE from 和 TDATE)。给出参数后,显示相关数据/网格。我想从存储过程中删除这些参数,以便我可以看到所有数据。这是程序
declare variable FID Integer;
declare variable ExistITem Integer;
declare variable FSIID Integer;
begin
ITEMNO=FITEMNO;
for select D.ARInvoiceID, D.Seq,
D.ITEMRESERVED1, D.ITEMRESERVED2, D.ITEMRESERVED3, D.ITEMRESERVED4, D.ITEMRESERVED5,
D.ITEMRESERVED6, D.ITEMRESERVED7, D.ITEMRESERVED8, D.ITEMRESERVED9, D.ITEMRESERVED10, D.WAREHOUSEID,
D.QUANTITY, D.DEPTID, D.PROJECTID, D.BRUTOUNITPRICE, D.ITEMUNIT, D.TAXCODES, D.ITEMDISCPC, D.QTYCONTROL, D.ITEMOVDESC,
D.DOID, D.DOSEQ, D.SOID, D.SOSEQ
from ARINVDET D inner join ARINV M on M.ARINVOICEID=D.ARINVOICEID
where D.ITEMNO=:ITEMNO and M.DeliveryOrder=0 and InvoiceDate between :FDate and :TDate --and GroupSeq+0 is null
into :FID, :SEQ, :ITEMRESERVED1, :ITEMRESERVED2, :ITEMRESERVED3, :ITEMRESERVED4, :ITEMRESERVED5,
:ITEMRESERVED6, :ITEMRESERVED7, :ITEMRESERVED8, :ITEMRESERVED9, :ITEMRESERVED10, :WAREHOUSEID,
:INVQTY, :DEPTID, :PROJECTID, :UNITPRICE, :ITEMUNIT, :TAXCODES, :ITEMDISCPC, :QTYCONTROL, :ITEMOVDESC,
:DOID, :DOSEQ, :SOID, :SOSEQ do begin
select Result,DiscLvl1,DiscLvl2,DiscLvl3,DiscLvl4,DiscLvl5
from CalcPercent(:ITEMDISCPC, :UNITPRICE) into :ITEMDISC,:DiscLvl1,:DiscLvl2,:DiscLvl3,:DiscLvl4,:DiscLvl5;
ITEMDISC = cast(INVQTY as double precision) * cast(ITEMDISC as double precision);
DiscLvl1 = cast(INVQTY as double precision) * cast(DiscLvl1 as double precision);
DiscLvl2 = cast(INVQTY as double precision) * cast(DiscLvl2 as double precision);
DiscLvl3 = cast(INVQTY as double precision) * cast(DiscLvl3 as double precision);
DiscLvl4 = cast(INVQTY as double precision) * cast(DiscLvl4 as double precision);
DiscLvl5 = cast(INVQTY as double precision) * cast(DiscLvl5 as double precision);
EXTAMOUNT = (cast(INVQTY as double precision) * cast(UNITPRICE as double precision)) - ITEMDISC;
select INVOICENO, INVOICEDATE, DESCRIPTION, CUSTOMERID, SALESMANID from ARINV where ARINVOICEID=:FID
into :INVOICENO, :INVOICEDATE, :INVOICEDESCRIPTION, :PERSONID, :SALESMANID;
INVOICETYPE = 0;
INVOICEID = FID;
SALESINVOICEID = FID;
select max(d.PAYMENTID) from arinvpmt d inner join ARPMT m on m.PaymentID=d.PaymentID
where m.FiscalPmt=0 and d.ARINVOICEID=:FID into :LASTPAYMENTID;
if (LASTPAYMENTID is null) then
LASTPAYMENTID = -1;
select SalesQty, SalesAmount, COGSAmount from Get_SalesItemARINV(:ITEMNO,:FID, :SEQ)
into :SALESQTY, :SALESAMOUNT, :COGSAMOUNT;
GROSSPROFIT = SALESAMOUNT - COGSAMOUNT;
GROSSPROFITPERCENT = 0;
if (SALESAMOUNT <> 0) then
GROSSPROFITPERCENT = (cast(GROSSPROFIT as double Precision)/cast(SALESAMOUNT as double precision)) * 100;
suspend;
end
for select D.ARRefundID, D.Seq, S.ARINVOICEID,
D.ITEMRESERVED1, D.ITEMRESERVED2, D.ITEMRESERVED3, D.ITEMRESERVED4, D.ITEMRESERVED5,
D.ITEMRESERVED6, D.ITEMRESERVED7, D.ITEMRESERVED8, D.ITEMRESERVED9, D.ITEMRESERVED10, D.WAREHOUSEID,
D.Quantity, D.DEPTID, D.PROJECTID, D.BRUTTOUNITPRICE, D.ITEMUNIT, D.TAXCODES, D.ITEMDISCPC, D.QTYCONTROL, D.ITEMOVDESC
from ARREFDET D inner join ARREFUND M on M.ARRefundID=D.ARRefundID
inner join ARINV S on S.ARINVOICEID=M.ARINVOICEID and S.DeliveryOrder=0
where D.ITEMNO=:ITEMNO and M.InvoiceDate between :FDate and :TDate --and GroupSeq+0 is null
into :FID, :SEQ, :FSIID, :ITEMRESERVED1, :ITEMRESERVED2, :ITEMRESERVED3, :ITEMRESERVED4, :ITEMRESERVED5,
:ITEMRESERVED6, :ITEMRESERVED7, :ITEMRESERVED8, :ITEMRESERVED9, :ITEMRESERVED10, :WAREHOUSEID,
:INVQTY, :DEPTID, :PROJECTID, :UNITPRICE, :ITEMUNIT, :TAXCODES, :ITEMDISCPC, :QTYCONTROL, :ITEMOVDESC do begin
select Result,DiscLvl1,DiscLvl2,DiscLvl3,DiscLvl4,DiscLvl5
from CalcPercent(:ITEMDISCPC, :UNITPRICE) into :ITEMDISC,:DiscLvl1,:DiscLvl2,:DiscLvl3,:DiscLvl4,:DiscLvl5;
ITEMDISC = - cast(INVQTY as double precision) * cast(ITEMDISC as double precision);
DiscLvl1 = - cast(INVQTY as double precision) * cast(DiscLvl1 as double precision);
DiscLvl2 = - cast(INVQTY as double precision) * cast(DiscLvl2 as double precision);
DiscLvl3 = - cast(INVQTY as double precision) * cast(DiscLvl3 as double precision);
DiscLvl4 = - cast(INVQTY as double precision) * cast(DiscLvl4 as double precision);
DiscLvl5 = - cast(INVQTY as double precision) * cast(DiscLvl5 as double precision);
EXTAMOUNT = (cast(INVQTY as double precision) * cast(UNITPRICE as double precision)) + ITEMDISC;
select INVOICENO, INVOICEDATE, DESCRIPTION, CUSTOMERID, SALESMANID from ARREFUND R where ARREFUNDID=:FID
into :INVOICENO, :INVOICEDATE, :INVOICEDESCRIPTION, :PERSONID, :SALESMANID;
INVOICETYPE = 1;
INVOICEID = FID;
SALESINVOICEID = FSIID;
LASTPAYMENTID = -1;
select SalesQty, SalesAmount, COGSAmount from Get_SalesItemARRefund(:ITEMNO,:FID, :SEQ)
into :SALESQTY, :SALESAMOUNT, :COGSAMOUNT;
GROSSPROFIT = SALESAMOUNT - COGSAMOUNT;
GROSSPROFITPERCENT = 0;
if (SALESAMOUNT <> 0) then
GROSSPROFITPERCENT = (cast(GROSSPROFIT as double Precision)/cast(SALESAMOUNT as double precision)) * 100;
suspend;
end
end
如何删除参数以查看适用于 View 的所有数据? (我正在使用 Upscene Database Workbench 5 进行数据库管理)
【问题讨论】:
-
不清楚你在问什么。如果要删除参数,则需要重新创建没有这些参数的存储过程。如果您要求重写您的存储过程。这太宽泛了:我们不是代码编写服务。
-
另请注意,显示的代码仅显示过程的主体,您缺少过程的关键标头。
标签: sql stored-procedures parameters firebird