我想在query组件里执行sql数据库服务器里的一个存储过程
该组件的sql属性里要这样设定
输出参数变量 数据类型[,.......]
EXECUTE 存储过程名 输入参数[,...[输出参数变量 OUTPUT[,....]]]
但是我怎么样去赋值呢?以及怎样去获得输出变量的值呢?

解决方案 »

  1.   

    scmd: String;
    scmd:='过程名(参数1,参数2)';(记得字符参数要打''哟)
    query.sql.clear;
    query.sql.add('begin);
    query.sql.add(scmd+';');
    query.sql.add('end;');
    query.prepare;
    query.execsql;
    (能用的话记得要给分哟)
      

  2.   

    TQuery没有办法返回存储过程的结果,应该用TStoredProc,实在要用TQuery,可以把存储过程执行的结果写入一张临时表,在用TQuery去select临时表里的数据
      

  3.   

    我也感觉用TSTOREDPROC,我一般也是这么用的。
      

  4.   

    用Query还是可以返回的给个例子你
    qry.Close;
      qry.SQL.Clear;
      qry.SQL.Add('Begin');
      qry.SQL.Add('EXP_FROM_UNIX_XS(:gsdw,:readdate,:retint,:retmsg);');
         //这是过程名,注意有‘;’号
      Qry.SQL.Add('End;');//这里也有';’号
      qry.Parameters[0].Value := gsdw;
      qry.Parameters[1].Value := readate;
      qry.Parameters[2].Direction := pdOutput;//输出参数
      qry.Parameters[3].Direction := pdOutput;
      qry.Parameters[2].Value := '####';//输出参数赋值,用#代替
      qry.Parameters[3].Value := '####';
      qry.Prepared;
      qry.ExecSQL;