当前位置:主页>销售管理软件> 列表

存储过程应用地问题可闹死人了啊。(20分) 找免费家庭记账软件

销售管理软件版1楼: CREATE PROCEDURE D_insert
@id char(10),
@name char(10),
@age int
AS
begin
insert treetext(id,name,age)
values(@id,@name,@age)
select * from treetext
end
这是我写的存储过程,在SQL的查询分析器上都能用。
我在DELPHI一调用他的时候就提示:‘no parameter type for parameter ''@sno''
只要设置好存储过程名,属性params不就自动生成参数吗???
下面是我在DELPHI中调用存储过程。
with storedproc1 do
begin
close;
//unprepare;
parambyname(''@sno'').Value:=edit2.Text;
parambyname(''@sname'').Value:=edit3.Text;
parambyname(''@salary'').Value:=edit4.Text;
parambyname(''@date'').Value:=edit5.Text;
prepare;
open;
end;
请不要告诉我是数据类型不对,我在ADOstoredproc1就能正常使用。
问题是在那里,高手来解决一下啊。

2楼: 错误
你的存储过程定义里只有三个参数
@id char(10),
@name char(10),
@age int
你却多引用了一个,当然不能通过了 如免费家庭记账软件

3楼: 你说说''@sno''是干吗的

4楼: 解决了吗?


解决了就揭贴

5楼: 过程中根本没定义@sno,你从哪引入?

6楼: 晕是我存储过程给贴错对不起各位了这个才是
CREATE PROCEDURE texttable_insert
@sno char(6),
@sname char(8),
@salary money,
@date datetime
AS
begin
insert texttable(sno,sname,salary,cometime)
values(@sno,@sname,@salary,@date)
select * from texttable
end
GO

销售管理软件版7楼: 如果确定程序没有任何问题,把prepare放在参数赋值之前,问题就可以解决
prepare;
parambyname(''@sno'').Value:=edit2.Text;
parambyname(''@sname'').Value:=edit3.Text;
parambyname(''@salary'').Value:=edit4.Text;
parambyname(''@date'').Value:=edit5.Text;

8楼: 在给参数赋值之前,先把parameters.refresh一下
如果还有错误,你把错误帖出来



老兄,把帖子该结的结了吧

9楼: 把prepare放在传参之前.还有一个办法就是在datamodul中设置好storedproc1的属性storedprocname,然后打开params,如果已经连接到数据库的话,参数会自动显示的.两层结构或静态调用存储过程可以这样做.

10楼: 放在之前也是不好使,我好像大概知道是什么问题。在storedproc1的的params属性,有’@SNO‘的设置params type 他自己默认地是ptunknow,当我把他们改成ptinput之后no parameter type for parameter ''@sno'' 这句话地错误提示倒是没了,可又找不到存储过程了。我真是晕死。我在ADOstoredproc1都测试好多次了绝无问题。可一到BDE就完了。

11楼: 问题解决了,我用ODBC做为数据源连就一切OK了。当我用BDE连地时候在存储过程
params type 他自己默认地是ptunknow,而换做ODBC以后,就变成了puinput原因就在这里,可为什么会出现这种原因我还是不清楚。。。。不过还是谢谢各全了,我给你们每人加5分了!