〖分享〗一个基于ADO存储过程的池化处理
依据工作的需要而开发,所以这里只选择了MSSQL和Oracle两个数据库。通过相对固定的调用方式,可以很好地让同一个程序在兼容Oracle和MSSQL。
1.约定都采用过程(不是函数)
2.第一个参数为整形,用于存储过程的返回值,即MSSQL存储过程当中的return
3.存储过程都通过记录集返回结果:
Oracle演示存储过程
create or replace procedure Simple_Procedure_Test( Result out Integer, --...--其它参数 PRetCursor out sys_refcursor)isbegin open PRetCursor for select '名称' as "TestName",'值' as "TestValue" from dual; --返回一个结果集 Result := 1; --MSSQL 的return值 return;end;
create procedure Simple_Procedure_TestAsbegin select '名称' as [TestName],'值' as [TestValue] --返回一个结果集 return 1 --MSSQL 的return值end
procedure TestOracle;var ADOPoolMan: TADOConnPoolMan; ProcObj: TADOConnPoolObject; Proc: TADOStoredProc;begin ADOPoolMan := TADOConnPoolMan.Create(Alias,dbUser,DbPass,DBName,true,ado_dtOracle); try ProcObj := ADOPoolMan.CreateSP('Simple_Procedure_Test'); if ProcObj = Nil then Exit;//错误处理 try Proc := ProcObj.ExecObject as TADOStoredProc; Proc.Close; //参数填充 //... Proc.Open; ShowMessage('Result = ' +Proc.Parameters.ParamByName('Result')); ShowMessage(Proc.Fields[0].FieldName + '=' + Proc.Fields[0].Value + #13#10 + Proc.Fields[1].FieldName + '=' + Proc.Fields[1].Value); finally ADOPoolMan.FreeObject(ProcObj); end; finally ADOPoolMan.Free; end;end;procedure TestMSSQLServer;var ADOPoolMan: TADOConnPoolMan; ProcObj: TADOConnPoolObject; Proc: TADOStoredProc;begin ADOPoolMan := TADOConnPoolMan.Create(Alias,dbUser,DbPass,DBName,true,ado_dtMSSQL); try ProcObj := ADOPoolMan.CreateSP('Simple_Procedure_Test'); if ProcObj = Nil then Exit;//错误处理 try Proc := ProcObj.ExecObject as TADOStoredProc; Proc.Close; //参数填充 //... Proc.Open; ShowMessage('Result = ' +Proc.Parameters.ParamByName('Result')); ShowMessage(Proc.Fields[0].FieldName + '=' + Proc.Fields[0].Value + #13#10 + Proc.Fields[1].FieldName + '=' + Proc.Fields[1].Value); finally ADOPoolMan.FreeObject(ProcObj); end; finally ADOPoolMan.Free; end;end;
[解决办法]
学习了!!!
[解决办法]
学习
[解决办法]
create procedure Simple_Procedure_Test
As
begin
select '名称' as [TestName],'值' as [TestValue] --返回一个结果集
[解决办法]
本身就可以的
[解决办法]
过来充电
[解决办法]
up
[解决办法]
顶
[解决办法]
很强大
[解决办法]
好的
[解决办法]
学习中
[解决办法]