delphi使用ODAC控件常用功能

Macro 宏使用

说明

ODAC将所有宏名称替换为其值,并在请求执行SQL时将SQL语句发送到服务器。

使用

property Macros: TMacros stored False;
function MacroByName(const Value: string): TMacro;

可以使用Macros[宏顺序]方式获取(依赖于条目的顺序,容易出错)

也可以使用MacroByName('宏名称')的方式

property AsDateTime: TDateTime;  //使用TDataTime值设置为宏。
property AsFloat: double;  //使用float值分配给宏。
property AsInteger: integer;  //使用integer值分配给宏。
property AsString: string;  //使用字符串值分配给宏。
property Value: string;  //用于将值设置为宏。

AsString与Value的区别是,Value会将内容直接替换,AsString会将内容都转为字符串(自动加引号)

//替换后的结果是一样的
Query1.MacroByName('StringMacro').Value := '''A string''';
Query1.MacroByName('StringMacro').AsString := 'A string';
property Active: boolean default True;

设置为True时,将使用宏中的内容替换,否则宏定义将替换为空字符串。默认值是true。

列子

1.替换表名

Query1.SQL.Text := 'SELECT * FROM &TableName';
Query1.MacroByName('TableName').Value := 'Dept';
Query1.Open;

2.替换条件

OraQuery.SQL.Text := 'SELECT * FROM Dept WHERE &Where > 20';
OraQuery.Macros[0].Value := 'DeptNo';

3.替换值

OraQuery.SQL:= 'SELECT * FROM Dept ORDER BY &Order';
OraQuery.MacroByName('Order').Value:= 'DeptNo';
OraQuery.Open; 

3.批量授权

Script1.SQL.Add('CREATE USER &Username IDENTIFIED BY &Password;'); 
Script1.SQL.Add('GRANT &Privileges TO &Username;');
原文地址:https://www.cnblogs.com/txgh/p/13451680.html