请问怎样用Query检索有参数的存储过程?(100分)

  • 主题发起人 主题发起人 freeone
  • 开始时间 开始时间
F

freeone

Unregistered / Unconfirmed
GUEST, unregistred user!
我用StoredProc能够执行,而在Query中
select * from outdata(8)却错误?显示
Generl SQL error.Syntax error in FROM clause.
其中outdata是查询过程,其间有一个integer参数.
注:我是用Access97数据库.
 
TStoredProc和Tquery都是从TBDEDataSet继承下来的。
你可在帮助中看一下。
也就是说,在一定程度上,你可以把TStoredProc当成Tquery用。
你的情况就是这样。
 
amo说的对,看你的情形,想用存储过程返回一个数据集,
你就不必再用query了.存储过程的调用过程大概是这样:
设定参数,准备,运行 ,返回的数据集 和 table ,query
等返回的效果是一样的
 
query中不能调用存储过程,所以错误。
 
此题的关键在于往access97中传送的存储过程SQL如何写.
MSSQL的会写, Access97没写过. 等我试验一下.
 
在Access97中的存储过程outdata为:
SELECT 主表.a, 主表.b, 主表.c, 主表.d FROM 主表
WHERE (((主表.b)=[test]));
但如果我改成
SELECT 主表.a, 主表.b, 主表.c, 主表.d
FROM 主表;
而且Query改成没有输入参数:
select * from outdata
却能正常执行,说明Query是支持存储过程的,只是如果存储过程有参数,那
它的SQL该怎么写?或许Query就不支持带参数的存储过程,只能用StoredProc?

下面的摘自<<Delphi 4核心编程技术>>:
输入参数用于由客户程序向存储过程传递值,值实际上是传递给存储过程中的SQL语句。如果一个存储过程有输入参数,一定要在执行该存储过程之前对输入参数赋值。如果用TQuery构件执行存储过程,可以把输入参数用一对圆括号括起来,彼此之间用逗号隔开,就像调用Object Pascal的过程一样。例如,假设要执行一个存储过程叫GET_EMP_PROJ,它需要传递一个输入参数,其值为52,SQL语句如下:
SELECT PROJ_IDFROM GET_EMP_PROJ(52)
 
在sql书信中增加如下内容
SELECT 表名 存储过程名(参数,......)
 
Liu JZX:
理论上是行的,可是.....一用起来就不行了
除非把(参数,......)拿掉,也就是没有参数!
 
请继续讨论,或结束问题
 
多人接受答案了。
 
后退
顶部