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;');