TOraScript组件
执行SQL和PL / SQL语句。
说明
TOraScript组件,可以执行多个SQL语句,包括DML和DDL语句,使用分号(;)分隔单个语句。
执行期间发生的错误可以在TDAScript.OnError事件中进行处理。 默认情况下,发生错误时,TOraScript会显示异常并继续执行。
常用属性
property Delimiter: string stored IsDelimiterStored; //设置分隔脚本语句的字符串。 //默认是分号(;)。 如果Delimiter属性的值为分号,则可以使用斜杠(/)分隔执行包含分号的语句(存储过程,遇到分号,不能马上执行,需要通过斜杠(/)来执行)。
//注意,斜杠必须是行中的第一个字符。
property Statements: TDAStatements; //包含从SQL属性获得的语句列表。 //例子,不执行创建表的SQL语句 with OraScript1 do begin SQL.Add('CREATE TABLE T_TESA(TCODE NUMBER(8), TNAME VARCHAR2(10));'); SQL.Add('INSERT INTO T_TESA VALUES(1, ''a'');'); SQL.Add('INSERT INTO T_TESA VALUES(2, ''b'');'); SQL.Add('INSERT INTO T_TESA VALUES(3, ''c'');'); for I := 0 to Statements.Count - 1 do begin if Copy(Statements[I].SQL, 1, 6) <> 'CREATE' then Statements[i].Execute; end; end;
常用函数
procedure Execute; virtual; //执行所有SQL语句。 如果Oracle引发错误,则会触发OnError事件。
procedure ExecuteFile(const FileName: string); //执行文件中包含的SQL语句。 //参数 FileName 文件名
procedure BreakExec; virtual; //停止SQL语句执行。
function ErrorOffset: Int64; //如果Execute方法引发异常,则调用ErrorOffset方法以获取语句的偏移量。 //返回值 错误的偏移量。
常用事件
procedure BeforeExecute(Sender: TObject; var SQL: string; var Omit: boolean); //在执行当前SQL语句之前触发。 //SQL 当前将执行的SQL语句的文本。 编写SQL来更改将要执行的语句。 //Omit 是否跳过当前语句的执行,将Omit设置为True可跳过语句执行。
procedure OnError(Sender: TObject; E: Exception; SQL: string; var Action: TErrorAction);
//执行语句,Oracle发错误时发生。 //E 错误信息 //SQL 执行的SQL语句。 //Action OnError处理程序退出时要执行的操作。默认为eaFail。
//TErrorAction = (eaAbort, eaFail, eaException, eaContinue);
eaAbort | 中止执行而不显示错误消息。 |
eaContinue | 继续执行。 |
eaException | 在Delphi 6和更高版本中,异常由Application.HandleException方法处理。 |
eaFail | 中止执行并显示错误消息。 |