用DELPHI做一个图书管理系统,在借书的时候需要判断读者是否可借。
我创建了一个borrow和reader表,通过查询borrow的是否过期orver和reader的借阅数r_num判断该读者是否可借创建了一个存储结构:create procedure  shifoukejie     /*查看读者是否可借书*/
   @r_id  char(4),@r_name char(8) output,@r_num int output,@orver varchar(2) output
as
 Select 
reader.r_name 读者姓名,reader.r_num 借阅数量,borrow.orver 是否超期
from reader left join borrow on reader.r_id=borrow.r_id
where reader.r_id=@r_id
go
declare @r_num int 
declare @orver varchar(2)  
declare @r_name char(8) 
exec  shifoukejie '0001',@r_name output,@r_num output,@orver output
print @r_name
查询时好像找不到我的DELPHI是这么写的:
ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('EXEC shifoukejie :r_id,:r_name output,:r_num output,:orver output');
   ADOQuery1.Parameters.ParamByName('r_id').Value:=edit3.text;
   ADOQuery1.Prepared;
   ADOQuery1.ExecSQL;
    label3.caption:=inttostr(ADOQuery1.Parameters.ParamValues['r_name']);
    label4.Caption:=inttostr(ADOQuery1.Parameters.Items[2].Value)+'本书,如下:';
   if  (ADOQuery1.Parameters.Items[2].Value=20) or (ADOQuery1.Parameters.Items[3].Value='否') then
   showmessage('该用户不能借书');
这里好像也有错!
请高手帮忙

解决方案 »

  1.   

    exec shifoukejie '0001',@r_name output,@r_num output,@orver output
    print @r_name
    查询时好像找不到你存储过程中又没对这些变量赋值,当然找不到
      

  2.   

    create procedure shifoukejie /*查看读者是否可借书*/
      @r_id char(4),@r_name char(8) output,@r_num int output,@orver varchar(2) output
    as
     Select
       @r_name = reader.r_name,
       @r_num = reader.r_num,
       @orver = borrow.orver
    from reader left join borrow on reader.r_id=borrow.r_id
    where reader.r_id=@r_id
    go
      

  3.   

    谢谢,现在存储过程可以了,但是在DELPHI中inttostr()不能用在char型的吧,要这么写呢
      

  4.   


    那就别用char,定义成String型呗~