在SQl中写的存储过程,在delphi 中怎么调用 在SQl中写的存储过程,在delphi 中怎么调用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try ADOStoredProc := TADOStoredProc.Create(nil); ADOStoredProc.Connection := ADOConnection; ADOStoredProc.ProcedureName := '存储过程1'; ADOStoredProc.Parameters.CreateParameter('tablename', ftString, pdInput, 20,传入值1); ADOStoredProc.Parameters.CreateParameter('fieldname', ftString, pdInput, 20, 传入值2); ADOStoredProc.Parameters.CreateParameter('condition', ftString, pdInput, 20, 传入值3); ADOStoredProc.Prepared := True; ADOStoredProc.ExecProc; finally ADOStoredProc.Free; end; 另一种adoQuery.sql.add('exec 存储过程1 参数');adoQuery.open; 用ADODataSet也行 ADODataSet1.Close ; ADODataSet1.CommandType := cmdText ; ADODataSet1.Parameters.Clear ; ADODataSet1.CommandText := '{call 存储过程(参数1,参数2)}' ; //调用存储过程 ADODataSet1.Open ; query.sql.add('exec '+ 存储过程名称 +' 参数1,参数2.........') 简单方便adoQuery.sql.add('exec 存储过程NAME 参数'); adoQuery.sql.add('exec 存储过程 参数'); 那么在SQl过程中怎么用传递过去的参数做条件 ORACLE中示例create or replace procedure t1(infltnox varchar,outfltnox varchar,portnox varchar,planenox varchar,result1 out varchar) isbeginEND;delphi中:SPcommon:TstoreProcedure SPcommon.StoredProcName :='t1';//调用存储过程将记录写入相应表 SPcommon.Prepare ; SPcommon.ParamByName('infltnox').AsString :=JinBanci ; SPcommon.ParamByName('outfltnox').AsString :=chubanci; SPcommon.ParamByName('planenox').AsString :=planeno ; SPcommon.ParamByName('portnox').AsString :='portno; SPcommon.ExecProc ; 可以在后面附加:strResult:=SPcommon.parambyname('result1 ').AsString;可以获取返回的结果 我按照楼上有前辈写了还是不成功。我原码发出来ADOStoredProc1.ProcedureName:='swldmx_jz';ADOStoredProc1.Parameters.ParamByName('@rp1').Value:='2002-01-01';ADOStoredProc1.Parameters.ParamByName('@rq2').Value:='2005-01-01';ADOStoredProc1.Prepared:=true;ADOStoredProc1.ExecProc;//以上部门是delphi调用程序CREATE PROCEDURE swldmx_jz @rp1 datetime,@rq2 datetime ASdelete from jz_仓库材料明细帐 where 日期>=@rp1 and 日期<=@rq2这部份是SQL存储过程不知要怎么改,是不是数据类型的问题。还是其它的问题 ADOStoredProc1.Parameters.ParamByName('@rp1').Value:='2002-01-01';ADOStoredProc1.Parameters.ParamByName('@rq2').Value:='2005-01-01';你还没有创建参数呢,怎么就往里面带啊先创建参数 Create Procedure ProcedureName (参数变量)AS -------------------------------- --------------------------------建议看看SQL SERVER 的帮助. 晕S,这样创建!ADOStoredProc.Parameters.CreateParameter('@rp1', ftDatetime, pdInput, 20,'2002-01-01'); 你不是已经在SERVER中的存储过程中声明变量了吗?你试试在前面加上adostoredproc.parameters.refesh; 如何去掉bitbtn的立体边框? 怎么用stmp控件写的程序无法发邮件!! 关于QuickRep打印条码标签的问题.急! 怎么样禁止输入重复记录呢? 请问如何在程序初始的时候同时显示两个表单??? 如何获得指定目录下的所以文件的文件名? 急求商品销售管理系统~~~~~~~~~~~~~~ TTreeView的问题 同一个链接的HTTP Status Codes为什么每次读得都不一样 delphi 曲线的实时绘制 如何放置控件 请教一怎么用一条SQL语句将一个表中的多条记录组织成为一个临时表中的一条记录的多个字段
ADOStoredProc := TADOStoredProc.Create(nil);
ADOStoredProc.Connection := ADOConnection; ADOStoredProc.ProcedureName := '存储过程1';
ADOStoredProc.Parameters.CreateParameter('tablename', ftString, pdInput, 20,传入值1);
ADOStoredProc.Parameters.CreateParameter('fieldname', ftString, pdInput, 20, 传入值2);
ADOStoredProc.Parameters.CreateParameter('condition', ftString, pdInput, 20, 传入值3); ADOStoredProc.Prepared := True;
ADOStoredProc.ExecProc;
finally
ADOStoredProc.Free;
end;
adoQuery.sql.add('exec 存储过程1 参数');
adoQuery.open;
ADODataSet1.Close ;
ADODataSet1.CommandType := cmdText ;
ADODataSet1.Parameters.Clear ;
ADODataSet1.CommandText := '{call 存储过程(参数1,参数2)}' ; //调用存储过程
ADODataSet1.Open ;
adoQuery.sql.add('exec 存储过程NAME 参数');
create or replace procedure t1(infltnox varchar,outfltnox varchar,portnox varchar,planenox varchar,result1 out varchar) is
begin
END;
delphi中:
SPcommon:TstoreProcedure
SPcommon.StoredProcName :='t1';//调用存储过程将记录写入相应表
SPcommon.Prepare ;
SPcommon.ParamByName('infltnox').AsString :=JinBanci ;
SPcommon.ParamByName('outfltnox').AsString :=chubanci;
SPcommon.ParamByName('planenox').AsString :=planeno ;
SPcommon.ParamByName('portnox').AsString :='portno;
SPcommon.ExecProc ;
strResult:=SPcommon.parambyname('result1 ').AsString;可以获取返回的结果
ADOStoredProc1.ProcedureName:='swldmx_jz';
ADOStoredProc1.Parameters.ParamByName('@rp1').Value:='2002-01-01';
ADOStoredProc1.Parameters.ParamByName('@rq2').Value:='2005-01-01';
ADOStoredProc1.Prepared:=true;
ADOStoredProc1.ExecProc;
//以上部门是delphi调用程序
CREATE PROCEDURE swldmx_jz
@rp1 datetime,
@rq2 datetime
AS
delete from jz_仓库材料明细帐 where 日期>=@rp1 and 日期<=@rq2
这部份是SQL存储过程
不知要怎么改,
是不是数据类型的问题。还是其它的问题
ADOStoredProc1.Parameters.ParamByName('@rq2').Value:='2005-01-01';你还没有创建参数呢,怎么就往里面带啊
先创建参数
(参数变量)
AS
--------------------------------
--------------------------------建议看看SQL SERVER 的帮助.