存储过程如下:
CREATE PROCEDURE CheckCustomerID(@customer_id VARCHAR(3),@ReturnValue varchar(20) output)
WITH ENCRYPTION
AS--判断客户编号是否存在
  if not exists ( select * from CustomerInformation where customer_id = @customer_id )
  begin
    set @ReturnValue = '此客户编号不存在'
    return 0
  end
go

解决方案 »

  1.   

    with AdoStoredProc1 do
      begin
        ExecProc;
        if Parameters[2].Value='此客户编号不存在' then
          ....
        else
          ....
      end;我觉得存储过程的参数@ReturnValue 设成数字型还好一些。让它返回0或1就是了
      

  2.   

    我是这样调用的:
      with dm.ADOStoredProc1 do
      begin
        Close;
        ProcedureName:='CheckCustomerID';
        Parameters.Refresh;
        Prepared;
        Parameters.ParamValues['@customer_id'].Value := edtLayOuter.Text;
        ExecProc;
        if Parameters[2].Value = '此客户编号不存在' then
          showmessage('此客户编号不存在');
      end;但总是报错:
    parameters '@customer_id' not find.why???
      

  3.   

    with dm.ADOStoredProc1 do
      begin
        Close;
        ProcedureName:='CheckCustomerID';
        Parameters.Refresh;
        Prepared;
        Parameters.ParamValues['customer_id'].Value := edtLayOuter.Text;
        ExecProc;
        if Parameters[2].Value = '此客户编号不存在' then
          showmessage('此客户编号不存在');
      end;
      

  4.   

    如果是你自己写的存储过程,可以修改返回值,使用其为INT型或BIT型。这样在程序中进行判断时,不会出现字符的问题。
    其次,你的参数可以设置返回值的类型,不要自动对应。还是个数的对应。
      

  5.   

    存储过程可不可这样写:CREATE PROCEDURE CheckCustomerID(@customer_id VARCHAR(3),@ReturnValue int output)
    WITH ENCRYPTION
    AS--判断客户编号是否存在
      if not exists ( select * from CustomerInformation where customer_id = @customer_id )
      begin
        set @ReturnValue = 0
        return @ReturnValue
      end
    go调用的过程有谁能帮我写一下。