delphi 如何接住sql 存储过程output传下来的参数

我在sql中写了插入的存储过程,其中要根据output传来的参数1,0,-1三种情况判断给delphi。但我不知道delphi中如何接住这三个参数。另外,如何将sql中s... 我在sql中写了插入的存储过程,其中要根据output传来的参数1,0 ,-1三种情况判断给delphi。但我不知道delphi中如何接住这三个参数。另外,如何将sql中select的查询结果赋值给delphi中的变量。求指教。小弟分不够了。忘见谅哈 展开
 我来答
FoolRabbit编程
推荐于2016-09-18 · 知道合伙人数码行家
FoolRabbit编程
知道合伙人数码行家
采纳数:619 获赞数:3805
毕业于苏州大学,4年编程经验,对WPF有研究。

向TA提问 私信TA
展开全部
譬如这样一个存储过程
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这个参数,用ADOStoredProc去接收
storeproc.ProcedureName:='proc_inserttea';
storeproc.Parameters.CreateParameter('i',ftInteger,pdOutput,0,null);
storeproc.Parameters.CreateParameter('id',ftString,pdInput,10,Edit6.Text);
storeproc.Parameters.CreateParameter('name',ftString,pdInput,10,Edit7.Text);
storeproc.Parameters.CreateParameter('title',ftString,pdInput,20,Edit8.Text);
storeproc.Parameters.CreateParameter('grade',ftString,pdInput,10,Edit9.Text);
storeproc.ExecProc;
TeaId:=storeproc.Parameters.ParamByName('i').Value;
这是一种方法
更多追问追答
追问
storeproc.ExecProc就是直接执行proc_inserttea这个存储过程吗?storeproc.Parameters.CreateParameter('i',ftInteger,pdOutput,0,null);这些语句是直接传递参数吗?
还有select @i=id from teacher where Tid=@id 这句可以直接在delphi中写吗?不需要加上sql.add(select @i=id from teacher where Tid=@id)吗?
不是很明白啊。望指点啊
追答
是的,执行前的是输入参数
执行存储过程前先要创存储过程的,我的存储过程已经创了,建存储过程可以用你的方法,也可以直接写在文本里面读
KDERP
推荐于2018-03-29 · 知道合伙人软件行家
KDERP
知道合伙人软件行家
采纳数:266 获赞数:698
2016-2017荣获 金达软件(广州) 最佳项目负责人

向TA提问 私信TA
展开全部
以存储过程名sp_output为例,条件为where,返回结果为某最大单号(字符型),返回列名为output。具体按以下步骤实现:
1、创建ADO,输入执行存储过程的SQL命令:EXEC sp_output ‘’(注:引号内为条件);
2、初使化ADO,即:
ADO.close;
ADO.open;
3、调用存储过程的返回值:ADO.fieldbyname('output').asstring。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ayi033
2011-10-12 · TA获得超过144个赞
知道小有建树答主
回答量:317
采纳率:100%
帮助的人:103万
展开全部
直接用控件ADOStoredProc,
ADOStoredProc.ProcedureName:='you Proc Name';
parameters.refresh;
parameters.paramByname('you Name').value := 'you value';//传入参数,output参数也要传入。

ExecProc;//执行存储过程
Result := ParamValues['you output name']; /接收output 参数

接收select 结果,如果是存储过程,一样用ADOStoredProc,执行改为OPen;读取结果如ADOQUery,如果是delphi程序里写查询语句,可以用ADOQUery,
ADOQUery.SQL.add(Select 'you name' from 'you table name' where .....);
ADOQuery.open;//执行
First;//定位到第一条
While not Eof do//不为空执行
begin
Result := FieldValues['you name'];//读取结果
。。。。。
Next;//吓一跳;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式