如果是用oracle的provider,在连接字符串里加上PLSQLRSet=1,放在字符串开头
例如:
ConnectStr:=Format('PLSQLRSet=1;Password=%s;Persist Security Info=True;User ID=%s;Data Source=%s;Extended Properties=""',[Password,UserName,DatabaseName]);
  OraADOConnection.Provider:='OraOLEDB.Oracle';
  OraADOConnection.ConnectionString:=ConnectStr;
  OraADOConnection.LoginPrompt:=False;
  OraADOConnection.Open;调用存储过程时,不要设置cursor类型的param
并且不能用PL/SQL格式调用
必须这样调:
'{CALL open_zzzzzzz}'  open_zzzzzzz是一个带cursor参数的存储过程
直接在dataset里执行,dataset的属性要设为cmdText
因为procedure实际上就是把CommandType设为cmdStoredProc的dataset如果是用微软的provider
把dataset的属性设为cmdStoredProc
不要加大括号和call,也不用设cursor型的param,
直接用存储过程名调用'open_zzzzzzz'  
连接字符串不要加PLSQLRSet=1
但是微软的provider不能返回含有blob的cursor