TADOStoredProc参数问题

一、 关于动态参数创建:
 
 1、CreateParameter方法;                  // 惯用此招    
    var
      StProc: TADOStoredProc;
      iPara1: byte;
      iPara2: byte;
    begin
      StProc := TADOStoredProc.Create(nil);
      StProc.Close;
      StProc.Connection := con;         //  TADOConnection
      StProc.ProcedureName := SP_NAME;  //  StoredProc Name
      with StProc.Parameters do
      begin
     Clear;
     CreateParameter('@para1', ftInteger, pdInput, 1, ipara1);
     CreateParameter('@para2', ftInteger, pdOutput, 1, Null);
      end;
 StProc.prepared;
      try
       StProc.ExecProc;
       //StProc.open;  //  返回数据集
      finally                                
       StProc.free;   //  如使用数据感知控件,慎用free,数据从何而来          
      end;      
    end;

  2、AddParameter方法
    // 省去变量声明、创建、执行过程,同上
    with StProc.Parameters.AddParameter do
    begin
      Name := '@para1';
      DataType := ftInteger;
      Direction := pdInput;
      value := iPara1;
    end;
    with StProc.Parameters.AddParameter do
    begin
      Name := '@para';
      DataType := ftWideString;
      Direction := pdOutput;
    end;

二、关于静态参数刷新
   
    StProc.ProcedureName:='getid';
    StProc.Parameters.Refresh;            
    //  切记,刷新后赋值,下为Delphi help 帮助原文。
    //  (个人意见)参数就已分配内存,故赋值在后
    //  to ensure a parameter collection has the most up to date information on  
    //  available parameters.        
   StProc.Parameters.ParamByName('@para1').value := iPara1;

后记:// 偶有闲暇,唯恐遗忘(此毛病已历来久,多次浪费时间), 遂信手记下。本意如此!
      // 后发现,有友关注,并发以邮件。深感上次写之轻浮,唯恐误导于人,进而补充如上。

posted @ 2010-08-25 23:33  覆雨翻云  阅读(1255)  评论(0编辑  收藏  举报