调用存储过程参数问题,(50分)

  • 主题发起人 主题发起人 R9
  • 开始时间 开始时间
R

R9

Unregistered / Unconfirmed
GUEST, unregistred user!
存储过程:

CREATE PROCEDURE 医生表p @uid varchar(30), @pwd varchar(30), @医生编号 int, @科室编号 int,
@医生姓名 varchar(8) = , @操作 varchar(4)
AS Begin
SET NOCOUNT ON
declare @test int, @dsql varchar(1000)
EXEC @test = 登录p @uid, @pwd, 'p2'
if @test = -1 return 50
if @操作 = '刷新' begin
set @dsql = 'select * from 医生表 where 1=1 '
EXEC(@dsql)

delphi调用:

ads.ProcedureName := '医生表p';
ads.Parameters.Refresh;
ads.Parameters.ParamValues['@uid']:='aa';
ads.Parameters.ParamValues['@pwd']:='bb';
ads.Parameters.ParamValues['@操作']:='刷新';
ads.Parameters.ParamValues['@医生编号']:=1;
ads.Parameters.ParamValues['@科室编号']:='';
ads.Parameters.ParamValues['@医生姓名']:='';
ads.Open;

编译到 ['@医生姓名'] 错误:一个错误类型的值!

谁来帮我看看?
 
@医生姓名 varchar(8) =
???
...
ads.Parameters[0].Value:=
ads.Parameters[1].Value:=
....
 
參數最好不要用中文﹐這樣的問題我遇到過。
 
EXEC @test = 登录p @uid, @pwd, 'p2' 是不是執行一個帶輸出參數的存儲過程﹖如果是
的話要加在調用時要加output字樣
 
to:seeme0526,
那个= 是发表问题无意加上的,实际存储过程里没有.
to:HeXiang Lee,
我用同样的方法进行其他存储过程调用成功,没有问题阿.中文应该没问题.

TO ALL ,也许我没说清楚,我只是调用存储过程的参数,来达到刷新效果的.
只是奇怪,那个"@医生姓名"在存储过程里面已经定义varchar类型了.
应该拿什么赋值给[@医生姓名],


 
把 登录p 存儲過程發過來看看﹗﹗
 
解决了.不好意思.问题不在这里,具体我也说不清楚.因为我的存储过程"刷新"代码没贴全,

大概是转换类型的问题,从int转换到varchar类型问题.

我把@科室编号 int, 在表里改成char就行了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部