Delphi中有数据控件,好像是TProc之类的,我现在没有用Delphi了,然后你在控件中取得存储过程的名字,使用IUNKNOWN接口,实现调用存储过程

解决方案 »

  1.   

    用ADOStoredProc1: TADOStoredProc;在ADO那一页上
    先在ADOStoredProc1.ConnectionString中设置数据库如
    ADOStoredProc1.ConnectionString = 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=服务器名'
    然后在ADOStoredProc1.ProcedureName = 存储过程名
    参数在ADOStoredProc1.Parameters中调整
    如返回数据集,在ADOStoredProc1.Recordset中查找
    使用时ADOStoredProc1.Open
    用完了ADOStoredProc1.Close
      

  2.   

    要视乎那个sql.
    若是用interbase或firebird作後台, 便可以直接用sql:With query1 do begin
    sql.clear;
    sql.add('select output_param1, output_param2,...');
    sql.add('from MyProc(input_param1, input_param2,...)');
    open;
    end;
      

  3.   

    gilbertz(阿黑) 
     说的真详细,不错,
     没什么说的拉
      

  4.   

    BDE和ADO也差不多,注意设置好参数,去掉名字后面的“;”
      

  5.   

    我更喜欢用一个动态SQL,如CLIENTDATASET,设置它的DataSetprovider的commandtext可修改,给CLIENTDATASET的commandtext动态赋值,如:
    CLIENTDATASET.close;
    CLIENTDATASET.commandtext:=' exec sp_storeprocedure1 参数1,参数2';
    CLIENTDATASET.open 如果有返回结果集(或CLIENTDATASET.execute如果没有返回结果集)
      

  6.   

    用Tadoquery或者Tquery
    query1.sql.text := 'exec youprocedue parm1,par1m2';
    如过没有结果返回就query1.ExecSQL反之就query1.open