一、三种执行sql的方法
1.&sql(select name INTO :name from table)
查询的是本地的数据,不需要适配器,通过打印SQLCODE返回执行状态
2.set sql="select name from table"
set tsc=..Adapter.ExecuteQuery(.res,sql)
res是查询的返回数据,可以通过网关查询到数据
3. set sql="select name from table"
set statement = ##class(%SQL.Statement).%New()
set qStatus = statement.%Prepare(sql)
#dim errorNum As %SQL.StatementResult = statement.%Execute()
查询本地的数据,不需要适配器
二、通过HTTP方式调用接口
Set tResponse = ##class(%Net.HttpResponse).%New()
Set tHttpRequestIn = ##class(%Net.HttpRequest).%New()
//消息类型
Set tHttpRequestIn.ContentType="application/json"
Set tHttpRequestIn.ContentCharset="UTF-8"
Set tHttpRequestIn.ContentEncoding="UTF-8"
//设置token
d tHttpRequestIn.SetHeader("token","")
Set Status = ..Adapter.SendFormDataURL(URL,.tResponse,"POST",tHttpRequestIn,,,STR)
STR是消息内容,URL是地址tResponse是返回消息
//如果三方接口是http:localhost/list?name=''&age='' 这样的话采用下面的方式进行操作
d tHttpRequestIn.InsertFormData("name","")
d tHttpRequestIn.InsertFormData("age","")
Set Status = ..Adapter.SendFormDataURL(URL,.tResponse,"POST",tHttpRequestIn,,,)
三、通过SOAP方式调用接口
1.Set tSC = ..Adapter.InvokeMethod(MethodName,.tResult,"参数1","参数2"...)
2.可以通过递归的方式动态设置参数
set endstr=dataArr.%Pop()//最后一个参数
set tres=..Invoke(dataArr,endstr)//参数数据,最后一个参数
Method Invoke(arr As %DynamicArray, args...) As %String
{
s size = arr.%Size()
if (size > 1){
s temp = arr.%Pop()
d ..Invoke(arr, temp, args...)
} else {
if (size = 0) {
s tsc = ..Adapter.InvokeMethod(..methodname, .Result, args...)
} else {
s temp = arr.%Pop()
s tsc = ..Adapter.InvokeMethod(..methodname, .Result, temp, args...)
}
if (tsc){
s ^||result = Result
}else{
$$$LOGERROR($SYSTEM.Status.GetErrorText(tsc))
s ^||result = "Error"
}
}
q ^||result
}
四.文件的导入导出(xml)
Set tSC= $system.OBJ.Export(类名_".cls",文件路径_"\"_$p(类名,".",*)_".xml")
Set tSC= $system.OBJ.Load(文件路径,"cbrpsuy")
五、方法
1.大小写转换
$zcvt("AAA","L") 转小写
$zcvt("aaa","U") 转大写
2.时间
时区偏移量 $ZTZ
正常 $zdt($h,3)
毫秒级 $zdt($ztimestamp,3,,3)
周几 $zd($h,10)
时间戳 $SYSTEM.SQL.DATEDIFF("ms","1970-01-01 00:00:00.000",$zdt($zts,3,,3))
时间加减 年-yy;季度-qq;月-mm;周-wk;日-dd;时-hh;分-mi;秒-ss;毫秒-ms
s Atime = $system.SQL.DATEADD("wk",+1,Atime)
计算时间差 DATEDIFF("日期部分",开始日期,结束日期)
s diff = $system.SQL.DATEDIFF("ss",time1,time2)