delphi 中如何调用sql 存储过程

最好有流程和例子

使用TADOStoredProc组件,可以,给你举个例子好了

with ADOStoredProc1 do
begin
Close;
Parameters.Clear;
ProcedureName:='SaveDate_dbzsm'; //存储过程名称
Parameters.CreateParameter('v_wlid', ftString, pdInput, 20, fgUnassigned);//传入参数(数字代表长度)
Parameters.CreateParameter('v_ddid', ftString, pdInput, 20,fgUnassigned); //传入参数
Parameters.CreateParameter('v_tm', ftString, pdInput, 500,fgUnassigned); //传入参数
Parameters.CreateParameter('v_returnstr', ftString, pdoutput, 30,fgUnassigned); //返回值
//为参数赋值
Parameters[0].Value :=trim(edit1.text);
Parameters[1].Value := trim(edit2.text);
Parameters[2].Value := trim(edit2.text);
Parameters[3].Value := ' ';

ExecProc;
reuturn:= Trim(Parameters.ParamByName('v_returnstr').Value);
end;
reuturn就是返回值,你可以放到stringgrid 里面。

也可以用adoquery 连接存储过程。

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('exec SaveDate_dbzsm :wlid,:ddid,:tm,:returnstr output');
Parameters.ParamByName('wlid').Value :=trim(edit1.text);
Parameters.ParamByName('ddid').Value :=trim(edit2.text);
Parameters.ParamByName('tm').Value := trim(edit3.text);
Parameters.ParamByName('returnstr').Value := ' ';
Open;
reuturn:= Parameters.ParamByName('returnstr').Value;
end;

http://zhidao.baidu.com/question/316727588.html
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-07-31
最好用
adoStoredProc.close;
adoStoredProc.ProcedureName := '过程名';
adoStoredProc.Parameters.refresh;
adoStoredProc.Parameters.ParamByName('过程变量1').value := 变量1;
adoStoredProc.Parameters.ParamByName('过程变量2').value := 变量2;
try
adoStoredProc.execproc;
except
//执行过程失败处理代码;
end;
if adoStoredProc.parameters[0].value <> 0 then
begin
//存储过程返回值错误 处理代码
end;

不要用
Parameters[1].Value 这种形式 有如果存储过程增加参数 改起来不直观。本回答被网友采纳
第2个回答  2015-09-30
delphi 中如何调用sql 存储过程
使用TADOStoredProc组件,可以,给你举个例子好了
with ADOStoredProc1 do
begin
Close;
Parameters.Clear;
ProcedureName:='SaveDate_dbzsm'; //存储过程名称
Parameters.CreateParameter('v_wlid', ftString, pdInput, 20, fgUnassigned);//传入参数(数字代表长度)
Parameters.CreateParameter('v_ddid', ftString, pdInput, 20,fgUnassigned); //传入参数
Parameters.CreateParameter('v_tm', ftString, pdInput, 500,fgUnassigned); //传入参数
Parameters.CreateParameter('v_returnstr', ftString, pdoutput, 30,fgUnassigned); //返回值
//为参数赋值
Parameters[0].Value :=trim(edit1.text);
Parameters[1].Value := trim(edit2.text);
Parameters[2].Value := trim(edit2.text);
Parameters[3].Value := ' ';

ExecProc;
reuturn:= Trim(Parameters.ParamByName('v_returnstr').Value);
end;
reuturn就是返回值,你可以放到stringgrid 里面。
也可以用adoquery 连接存储过程。
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('exec SaveDate_dbzsm :wlid,:ddid,:tm,:returnstr output');
Parameters.ParamByName('wlid').Value :=trim(edit1.text);
Parameters.ParamByName('ddid').Value :=trim(edit2.text);
Parameters.ParamByName('tm').Value := trim(edit3.text);
Parameters.ParamByName('returnstr').Value := ' ';
Open;
reuturn:= Parameters.ParamByName('returnstr').Value;
end;
http://zhidao.baidu.com/question/316727588.html
第3个回答  2011-09-17
给出一段例子,可以参考下

with adoStoredProc do//TadoStoredProc
begin
parameters.clear;
parameters.CreateParameter( '@m1 ',ftsmallint,pdinput,0,8);
parameters.CreateParameter( '@m2 ',ftsmallint,pdinput,0,12);
parameters.CreateParameter( '@result ',ftsmallint,pdinputoutput,0,0);
execproc;
end;本回答被网友采纳
第4个回答  2011-09-21
Parameters[1].Value 这种形式 有如果存储过程增加参数 改起来不直观。

采用这种方式调试相对麻烦,但有利防注

delphi 中如何调用sql 存储过程
reuturn就是返回值,你可以放到stringgrid 里面。也可以用adoquery 连接存储过程。with ADOQuery1 do begin Close;SQL.Clear;SQL.Add('exec SaveDate_dbzsm :wlid,:ddid,:tm,:returnstr output');Parameters.ParamByName('wlid').Value :=trim(edit1.text);Parameters.ParamByName('ddid').Value...

delphi 调用存储过程
用SQL数据库为例子 代码如下:ADOStoredProc1.Close;DataSource2.DataSet:=ADOStoredProc1;ADOStoredProc1.ProcedureName:='存储过程名称';ADOStoredProc1.Parameters.Refresh; \/\/必须有该条刷新语句 ADOStoredProc1.Parameters[1].Value:=2; \/\/在存储过程组件里参数从1 开始 ADOStoredProc1.ExecProc;ADOStore...

delphi 如何接住sql 存储过程output传下来的参数
譬如这样一个存储过程 create procedure proc_inserttea(@i int output,@id char(10),@name char(10),@title char(20),@grade char(5))as insert into teacher(Tid,Tname,title,Tgrade) values(@id,@name,@title,@grade)select @i=id from teacher where Tid=@id 传出id这个参数,用ADOSt...

delphi 中如何使用sql 存储过程的返回值
Select @r as result 然后Open,用FieldByNmae读取result字段的值

delphi 中 使用ADOQuery 如何执行已有的存储过程
SQL.Clear;ADOQuery1.SQL.Add(‘execute MyABC :a,:b,:c output‘);\/\/也要添加output 关键字!ADOQuery1.Parameters.ParamByName(‘a‘).Value:=250;ADOQuery1.Parameters.ParamByName(‘b‘).Value:=40;ADOQuery1.ExecSQL;showmessage(ADOQuery1.Parameters.ParamByName(‘c‘).Value);...

Delphi 2005环境下调用SQL Server 2000存储过程的几种途径
摘 要:通过存储过程实现远程数据库访问将提高客户端程序执行的速度和性能。由于存储过程是在服务器端执行并且隐藏实现细节,被认为是更安全和具有模块化。文章从实际应用的角度,阐述在Delphi 2005环境下调用SQL Server 2000关系数据库存储过程的几种途径。

在delphi 中怎么利用sql中的存储过程的返回值
存储过程:Create procedure proc_login username varchar(20),password varchar(20)as declare @result int select @result=count(*) from table1 where user=@username and pass=@password if @result=0 return 0 return 1 go delphi代码:var ret:integer;...with ADOStoredProc1 do begin Close;...

delphi 调用SQL存储过程
你为什么一定要用stringgrid,用DBGRID或者DBGRIDEH就可以了.调用存储过程指定其参数就行了,如果存储过程没有参数,只需要指明存储过程名称就行.SQL数据库(不是SQL语句)所谓的存储过程实际上就是一条查询语句(SQL server称之为视图).

在Delphi中若何应用SQL自定义函数,参数如何传递给自定义函数?
1如不雅是直接应用萌芽语句就用AdoQuery,直接ADoQuery.SQL.Txt := 'your proc Txt' 或 SQL.Add()也可以,可以直接在your Txt琅绫擎给参数赋值,然后open就履行啦如不雅是调用SQL server 中的存储过程,那么应用ADOStoredProc控件就行,先设置ProcedureName:=‘your proc name’;refresh 一下,...

SQL 存储过程定义了 @Picture image 图片类型的传入参数,如何在Delphi...
如果是SQL2005以上的版本 用varbinary varbinary [ ( n | max) ]可变长度的二进位资料。n 是 1 到 8,000 的值。max 表示储存体大小上限是 2^31-1 位元组。储存体大小是输入资料的实际长度再加上 2 位元组。输入的资料有可能是 0 位元组。varbinary 的 SQL-2003 同义字是 binary varying。

相似回答