比如一个存储过程名:ccgc,那么我想在程序中调用它。应该怎么办呢?具体做法和代码怎么写?谢谢~!!

解决方案 »

  1.   

    adoquery时语句应该写为query.sql.text:='{call ccgc}'
      

  2.   

    procedure YdThread.ExecProSms_SHARP(var SOPCODEID,STEL,SCNT,SMINFO:STRING);
    begin
      stp := TStoredProc.Create(nil);     //动态创建,其实直接放一个控件也可以,
      try                                 //根据你的要求,ADO,和BDE差不多。 
        stp.DatabaseName :=DataModule1.Database1.DatabaseName;  //你定义的DATABASE,
        stp.SessionName := DataModule1.Session1.SessionName;
        stp.Active := False;
        stp.StoredProcName := 'PRO_SHARP_SMS';        //存储过程名称
        stp.Params.Clear;    stp.Params.Add;
        stp.Params[0].Name := 'SOPCODEID';
        stp.Params[0].DataType := ftString;               //入口参数1,字符型
        stp.Params[0].ParamType := ptInput;
        stp.Params[0].AsString := SOPCODEID;    stp.Params.Add;
        stp.Params[1].Name := 'STEL';                   //入口参数2,字符型
        stp.Params[1].DataType := ftString;
        stp.Params[1].ParamType := ptInput;
        stp.Params[1].AsString := STel;    stp.Params.Add;
        stp.Params[2].Name := 'SCNT';
        stp.Params[2].DataType := ftString;               //入口参数3,字符型
        stp.Params[2].ParamType := ptInput;
        stp.Params[2].AsString := SCNT;    stp.Params.Add;
        stp.Params[3].Name := 'SMS_INFO';
        stp.Params[3].DataType := ftString;
        stp.Params[3].ParamType := ptoutput;       //出口参数,返回处理过的内容    stp.ExecProc;                              //执行
        sminfo:=stp.Params[3].AsString ;          //返回参数的值。  finally
        stp.Free;                                  //释放刚才的动态创建的过程。
      end;end;
      

  3.   

    Oracle的存储过程有什么与众不同吗?