All pastes #453759 Raw Edit

Gopneg

public text v1 · immutable
·published 2007-04-23 05:28 UTC
rendered paste body

procedure SqlQueryVariables(SQLText: string; Variables: TOraVariableArr; LogFile: string);
var i: integer;
begin
  SQLText := 'begin' + CRLF + SQLText + ';' + CRLF +  'end;';

  OracleQuery.SQL.Clear;
  OracleQuery.SQL.Text := SQLText;
  OracleQuery.ClearVariables;
  OracleQuery.DeleteVariables;
  
  for i := Low(Variables) to High(Variables) do
    begin
      OracleQuery.DeclareAndSet(Variables[i].Variable, Variables[i].VarType, Variables[i].Value);
      {OracleQuery.DeclareVariable(Variables[i].Variable, Variables[i].VarType);
      OracleQuery.SetVariable(Variables[i].Variable, Variables[i].Value);}
    end;

  try
    OracleQuery.Execute;
    for i := Low(Variables) to High(Variables) do
    if OracleQuery.VariableIndex(Variables[i].Variable) >= 0 then
       begin
         Variables[i].Value := OracleQuery.GetVariable(Variables[i].Variable);
       end;
  except
    on E: EOracleError do
       begin
         {TODO: вспомнить как ловить ошибки :) }
         Log(['Error. Oracle OracleQuery return exception: ', OraSession.ErrorMessage(E.ErrorCode), CRLF], LogFile);
            for i := Low(Variables) to High(Variables) do
              if OracleQuery.VariableIndex(Variables[i].Variable) >= 0 then
                 Variables[i].Value := 0;
       end;
  end;

end;