如小弟写的这段语句,编译无法通过。
     with query1 do
     begin
     close;
     sql.clear;
     sql.add('exec proc_test(:p_deptno)');
     parambyname('p_deptno').asstring:='1132';
     prepare;
     execsql;
     end;
注:该过程是在delphi中。动态创建出来的。现在就是不懂得如何执行?
谢!

解决方案 »

  1.   

    该过程是在delphi中动态创建出来的?????
    你是指你贴的这段还是你的存储过程是动态创建的?
      

  2.   

    使用  TStoredProc  构件;
    调用方式:先定义参数类型
        with ThreadSP  do
        begin
            close;
            DatabaseName := FDBDb.DatabaseName;                   **数据库名 
            StoredProcName:='PAK_LIQ_TESTLIQ.PRC_TESTLIQ';        **SP名
            Params.Clear;
            P1[0]:=TParam.Create(Params, ptInput);
            P1[1]:=TParam.Create(Params, ptInputOutput);
            P1[2]:=TParam.Create(Params, ptInputOutput);
            Params[0].Asstring :='';                              *** 赋初值  
            Params[1].Asstring := '0';
            Params[2].Asstring := '0';
            Params[0].Name := 'in_Bra_id';                         *** 变量名   
            Params[1].Name := 'out_Flag';
            Params[2].Name := 'out_info';
        end;
    然后再调用就可以了。
      

  3.   

    sky2003202() is right.
    在delphi中有专门执行存储过程的控件,执行存储过程的方法在很多书中都有介绍。
      

  4.   

    还没这样用过。存储过程创建以后应该是在数据库里的。
    为何不用TStoredProc呢
      

  5.   

    query可以返回参数,Tstoreproc不能返回参数