范例01:同时返回结果集与字段结构信息,并将字段转换为大写(以MySQL为例)
f31:=0; //不缓存
f30:=0x40000000; //不访问元数据
f29:=0x20000000; //转为大写
f28:=0x10000000; //转大小写有效
df:=2; //同时返回结果集与字段结构信息
Flags:=f31+f30+f29+f28+df;
echo Flags;
echo 'FLAGS高四位:',Flags.&0x80000000<>0,Flags.&0x40000000 <>0,Flags.&0x20000000 <>0,Flags.&0x10000000 <>0;
echo 'FLAGS低位值:',Flags.&3;
//test表中数据为浦发银行2023-8-31至2023-9-13的收盘价
sqlstr:='select * from test where close<(select avg(close) from test)';
ret:=rdo2 ExecSQL(Flags,'mysql',sqlstr,result);
if ret then
return result;
else
return rdo2 SQLErrorMsg();//报错信息
//返回结果
其中,
Result[0]返回结果:
Result[1]返回字段结构信息:
范例2:
//表名:SZ000002cy_5m
//数据库别名:cfsql (SQL和天软交互时配置的数据库别名)
s:="select * from SZ000002cy_15m;";
ret:=rdo2 execsql("cfsql",s,data);
if ret then
return data;
结果:
范例03:存贮过程的调用,参数名TestParamName是一个输入输出参数,最后param的结果会被修改。
param:=array("TestParamName":("Value":"ParamNameValue","Direction":3));
execsql(param,"test","myStoredProctest",result);
Sys_refcursor输出参数:
API链接方式支持oracle存贮过程的sys_refcursor输出参数,会作为多结果集返回。
假定oracle存贮过程如下:
create or replace procedure testproc(b out sys_refcursor,c out sys_refcursor) is
begin
open b for
select * from TESTTABLE;
open c for
select * from TESTTABLE;
end testproc;
可以使用如下代码来获得两个结果集:
a:=array(
"b":("Direction":2,"Type":22),
"c":("Direction":2,"Type":22)
);
execsql(a,"ora2","TESTPROC",r);
注:ADO模式无法支持此种类型返回参数。
范例04:Array DML 方式批量插入数据范例
//获取数据模型
r:=TSFL_SQL_GetData(20130101T,20131231T);
{Insert语句,注意下列数据中EndDate,StockID,StockName,price,vol是占位符,对应param数组中的占位符。与数据库表中列名无关,此处没有指定Test的列名,按照数据库表中列的顺序给定数据。如需指定列名,在Test后带上列名}
s:="insert into Test values(:EndDate,:StockID,:StockName,:price,:vol)";
{插入数据列值:EndDate,StockID,StockName,price,vol是占位符,
}
param:=array("EndDate":array("Direction":1, "Value":r[:,'EndDate']),
"StockID":array("Direction":1, "Value":r[:,'StockId']),
"StockName":array("Direction":1, "Value":r[:,'StockName']),
"price":array("Direction":1, "Value":r[:,'Close']),
"vol":array("Direction":1, "Value":r[:,'Vol']));
//执行SQL操作
ret:=rdo2 ExecSQL(param, 'SQLAlias', s, result);
return result;
范例05:输出转为WideString类型
SQLStr1:="select * from test";
//数据库别名使用widestring宽字节
DBname:=L'pgsql';
ExecSQL(DBname,SQLStr1,t);
echo tostn(t);
return t;
源串中字符串为宽字节:
更多关于数据库的详细说明及范例,见专题:
http://www.tinysoft.com.cn/tsdn/helpdoc/index.tsl?itemid=15106