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;
解决方案 »
- 程序实现效率的问题,请教大家
- 难道不适合Delphi三层开发?欢迎大家讨论,拍砖
- dll中的窗体调用时窗体上的SpeedButton为什么不好用了?
- delphi 自带的报表设计器,怎么设置预览中的窗体标题栏中的内容
- 【PostMessage】参数类型转换问题,描述见内,谢谢。
- 如何在TStringGrid选择一个矩形框(并获得启始Col,Row和结束Col,Row的值)?
- 组件代号不公开
- 散分100,
- 如何传值
- 谁能给我详细的说说Delphi的调试技术、经验、方法!分数会不断的加!
- twebbrowser做的浏览器缓存的问题,急,up有分!!!!
- 关于delphi7.0中rave的问题.超级难解决的哦
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???