初涉delphi,50分请教一个简单问题—查询控件TADOQuery调存储过程
有一SQL SERVERS数据库名为:abc,存储过程名:abc_ji
存储过程内容:
CREATE PROCEDURE abc_ji
@ID int,@name varchar(20) output
AS
set @name=(select name from student where ID=@ID)
GO
我要把查询结果用一个文本框显示出来,我按常规把所有属性设置好,写好代码
运行时老是提醒对象名abc-ji无效,那位先进能帮帮忙,最好有原代码,谢了!!
纯粹是学习调存储过程,书上都难找,看完了帮助还是找不出毛病。
问题点数:50、回复次数:13Top
1 楼belllab(菜鸟)回复于 2002-04-04 18:47:53 得分 0
SQL.Add('declare @Name varchar(20) ');
SQL.Add('exec abc_ji :id,@Name output ');
SQL.Add('select Ret=@Name ');
Open;Top
2 楼newyj(吴刚vs西西弗)回复于 2002-04-04 19:08:11 得分 20
abc-ji无效可能是你的数据库连错了;
我觉得query好象不能返回一个 output类型的参数,因为他只是一个值而非一个recordset
最好还是用ADOStoredProc
设置ADOStoredProc 的ProcedureName
就可以看到他的参数,设置以下参数的类型
ADOStoredProc1.ExecProc;
Edit1.Text:= ADOStoredProc1.Parameters[2].Value;
要用adoquery
CREATE PROCEDURE abc_ji
@ID int AS
select name from student where ID=@ID
---------
id :=111;
qry.close
qry.sql.text := 'abc_ji '+ittostr(id);
qry.open;
eidt1.text :=qry.Fields[0].AsString;
qry.close;
//我已经验证过了
Top
3 楼xuehan(冬天的雪)回复于 2002-04-05 09:34:23 得分 0
对newyj(老鬼):老是提示我:Missing Connection or ConnectionString
但是我显示表的记录又正确,至少不是数据库连接出错,这是什么原因?Top
4 楼zx_wang(wzx)回复于 2002-04-05 10:06:24 得分 0
返回参数的存储过程,不能用TADOQuery,必须用TADOProcedureTop
5 楼xuehan(冬天的雪)回复于 2002-04-05 10:16:16 得分 0
对zx_wang(wzx) :谢谢你,但是我写一个存储过程进行查询,用查询控件应该能显示结果吧?怎样实现?我的存储过程已该成:
CREATE PROCEDURE abc_ji
@ID int
AS
select name from student where ID=@ID
Top
6 楼zx_wang(wzx)回复于 2002-04-05 10:19:31 得分 0
ADOQuery1.SQL.ADD('EXEC @ID = 1');
OK!Top
7 楼zx_wang(wzx)回复于 2002-04-05 10:22:04 得分 0
或者
ADOQuery1.SQL.ADD('EXEC @ID = :ID');
Parameters['ID'].Value := IntTostr(Edit1.Text);Top
8 楼forgot(忘记forgot2000)回复于 2002-04-05 10:22:33 得分 0
你的ProcedureName是不是"abc_ji;1"?去掉";1"Top
9 楼zx_wang(wzx)回复于 2002-04-05 10:27:31 得分 0
ADOQuery1.SQL.ADD('EXEC abc_ji @ID = :ID');
ADOQuery1.Parameters['ID'].Value := IntTostr(Edit1.Text);
Top
10 楼xuehan(冬天的雪)回复于 2002-04-05 10:44:34 得分 0
请问各位ADOQuery1的哪些属性需设置?Top
11 楼xuehan(冬天的雪)回复于 2002-04-05 10:50:24 得分 0
执行到ADOQuery1.open;
还是提示:Missing Connection or ConnectionString
没辙了,都不知道该在哪些地方设置,555555555555!!!!!
Top
12 楼zx_wang(wzx)回复于 2002-04-05 10:54:58 得分 30
1.ODBC
ADOQuery1.ConnectionString := 'Driver={SQL Server};UID=sa;PWD=;Initial Catalog=AirImport;Server=192.168.12.6'
2.OLEDB
ADOQuery1.ConnectString := 'Provider=SQLOLEDB.1;User ID=sa;Password=;Initial Catalog=AirImport;Data Source=192.168.12.6'
强烈建议你用OLEDBTop
13 楼xuehan(冬天的雪)回复于 2002-04-05 11:33:12 得分 0
谢谢各位,马上加分!!!Top




