USE football
GO
存储过程:
IF EXISTS(SELECT name FROM sysobjects
WHERE name = 'InsertMoneyType' AND type = 'P')
DROP PROCEDURE InsertMoneyType
GO
USE football
GO
CREATE PROCEDURE InsertMoneyType
@money_name varchar(10),
@money_sname varchar(10),
@change_rate float,
@MaxMoney_id varchar(3) output
AS
DECLARE @money_id varchar(3)
SELECT @MaxMoney_id = max(money_id) + 1 FROM MoneyType
INSERT INTO MoneyType(money_id,money_name,money_sname,change_rate)
VALUES(@MaxMoney_id,
@money_name,
@money_sname,
@Change_rate)
GOdelphi调用:
procedure TfmModifyMoneyType.btnOKClick(Sender: TObject);
var
iMoneyID: integer;
begin
with dmFootBallForm.ADOStoredProc1 do
begin
Close;
ProcedureName:='InsertMoneyType';
Parameters.Refresh();
Prepared;
Parameters.ParamByName('@money_name').Value := edtMoneyName.Text;
Parameters.ParamByName('@money_sname').Value := edtMoneySName.Text;
Parameters.ParamByName('@Change_rate').Value := edtChangeRate.Text;
Parameters.ParamByName('@MaxMoney_id').Value := iMoneyID;
Open;
end;
end;
GO
存储过程:
IF EXISTS(SELECT name FROM sysobjects
WHERE name = 'InsertMoneyType' AND type = 'P')
DROP PROCEDURE InsertMoneyType
GO
USE football
GO
CREATE PROCEDURE InsertMoneyType
@money_name varchar(10),
@money_sname varchar(10),
@change_rate float,
@MaxMoney_id varchar(3) output
AS
DECLARE @money_id varchar(3)
SELECT @MaxMoney_id = max(money_id) + 1 FROM MoneyType
INSERT INTO MoneyType(money_id,money_name,money_sname,change_rate)
VALUES(@MaxMoney_id,
@money_name,
@money_sname,
@Change_rate)
GOdelphi调用:
procedure TfmModifyMoneyType.btnOKClick(Sender: TObject);
var
iMoneyID: integer;
begin
with dmFootBallForm.ADOStoredProc1 do
begin
Close;
ProcedureName:='InsertMoneyType';
Parameters.Refresh();
Prepared;
Parameters.ParamByName('@money_name').Value := edtMoneyName.Text;
Parameters.ParamByName('@money_sname').Value := edtMoneySName.Text;
Parameters.ParamByName('@Change_rate').Value := edtChangeRate.Text;
Parameters.ParamByName('@MaxMoney_id').Value := iMoneyID;
Open;
end;
end;
ADOStoredProc1:Parameter '@money_name' not found
>>>只知道这句话是有问题的 但是错误信息的提示好像不是这里的
参数是flaot但是你的赋值却是string
>>>@MaxMoney_id varchar(3) output 是你的输出参数为什么还要赋值呢?
Parameters.ParamByName('@MaxMoney_id').Value := iMoneyID;
var
iMoneyID: integer;
begin
with dmFootBallForm.ADOStoredProc1 do
begin
Close;
ProcedureName:='InsertMoneyType';
///加上这一段
parameters.Clear;
parameters.CreateParameter('@money_name ',ftstring,pdinput,10,0);
parameters.CreateParameter('@money_sname',ftstring,pdinput,10,1);
parameters.CreateParameter('@change_rate',ftcurrency,pdinput,8,2);
parameters.CreateParameter('@MaxMoney_id',ftstring,pdoutput,3,3);
prepared;
///----------------
Parameters.ParamByName('@money_name').Value := edtMoneyName.Text;
Parameters.ParamByName('@money_sname').Value := edtMoneySName.Text;
Parameters.ParamByName('@Change_rate').Value := edtChangeRate.Text;
Parameters.ParamByName('@MaxMoney_id').Value := iMoneyID;
Open;
end;
end;
Undeclared identifier:"ftcurrency"
Undeclared identifier:"ftoutput"
why???