具有 table 个字段的过程调用函数
Procedure call function with table fields
如何在具有 table 字段的过程中调用函数?
问题How to call a stored procedure using table data我看过了,但是不一样
我有一个功能:
CREATE FUNCTION valorPedido (qtde int, decimal value (11.2)) RETURNS double
BEGIN
RETURN qtde * value;
END
我有程序 ItemPedido:
CREATE PROCEDURE ItemPedido (numped int, int codtab, codpro int (4), qtdped int, decimal valitem (11.2), decimal valped (11.2), datped date)
BEGIN
insert into itens_pedido (numped, codtab, codpro, qtdped, valitem, valped, datped) values (numped, codtab, codpro, qtdped, valitem, valped, datped);
END
还有一个 table 叫做 itens_Pedido:
IdItemPedido int (11) AI PK
NumPed int (11)
CodTab int (11)
CodPro int (4)
QtdPed int (11)
ValItem decimal (11.2)
ValPed decimal (11.2)
DatPed date
我想这样调用程序:
call ItemPedido (1, 99, 1, 10, 4, valorPedido (qtdped, valitem), sysdate());
错误代码:1054。'field list'
中的未知列 'qtdped'
但我只能这样:
call ItemPedido (1, 99, 1, 10, 4, valorPedido (10, 4), sysdate());
你可以这样做;
从 sp 中删除 valped 参数并使用函数计算在行插入后更新 table。
CREATE PROCEDURE ItemPedido (numped int, int codtab, codpro int (4), qtdped int, decimal valitem (11.2), datped date)
BEGIN
insert into itens_pedido (numped, codtab, codpro, qtdped, valitem, datped)
values (numped, codtab, codpro, qtdped, valitem, datped);
set @lastId=LAST_INSERT_ID();
set @valped= (select valorPedido(qtdped,valitem) from itens_pedido where AI =@lastId);
update itens_pedido set valped=@valped where AI=@lastId;
END
如何在具有 table 字段的过程中调用函数?
问题How to call a stored procedure using table data我看过了,但是不一样
我有一个功能:
CREATE FUNCTION valorPedido (qtde int, decimal value (11.2)) RETURNS double
BEGIN
RETURN qtde * value;
END
我有程序 ItemPedido:
CREATE PROCEDURE ItemPedido (numped int, int codtab, codpro int (4), qtdped int, decimal valitem (11.2), decimal valped (11.2), datped date)
BEGIN
insert into itens_pedido (numped, codtab, codpro, qtdped, valitem, valped, datped) values (numped, codtab, codpro, qtdped, valitem, valped, datped);
END
还有一个 table 叫做 itens_Pedido:
IdItemPedido int (11) AI PK
NumPed int (11)
CodTab int (11)
CodPro int (4)
QtdPed int (11)
ValItem decimal (11.2)
ValPed decimal (11.2)
DatPed date
我想这样调用程序:
call ItemPedido (1, 99, 1, 10, 4, valorPedido (qtdped, valitem), sysdate());
错误代码:1054。'field list'
中的未知列 'qtdped'但我只能这样:
call ItemPedido (1, 99, 1, 10, 4, valorPedido (10, 4), sysdate());
你可以这样做;
从 sp 中删除 valped 参数并使用函数计算在行插入后更新 table。
CREATE PROCEDURE ItemPedido (numped int, int codtab, codpro int (4), qtdped int, decimal valitem (11.2), datped date)
BEGIN
insert into itens_pedido (numped, codtab, codpro, qtdped, valitem, datped)
values (numped, codtab, codpro, qtdped, valitem, datped);
set @lastId=LAST_INSERT_ID();
set @valped= (select valorPedido(qtdped,valitem) from itens_pedido where AI =@lastId);
update itens_pedido set valped=@valped where AI=@lastId;
END