$zcvt转换函数--全名($ZCONVERT)
//把w转换成C
w $zcvt("www.wocao.com","C")
s:$zcvt(type,"U")="Q"
XECUTE动态执行表达式
例子1
动态的打印一句话
XECUTE ("WRITE ""hello world"",!")
例子二:
执行1>3表达式获取结果
(data) s data ="表达式",data--意思是 获取表达式的值赋值给data ,.data是需要返回一个表达式执行后的结果
XECUTE ("(data) s data="_1_>_3,.data)
例子三:
得到in输入的值+3赋值给out
SET x=1 XECUTE ("(in,out) { SET x=in+3 SET out=x }",x,.y) WRITE x ; the value of x is 1 例子四: 动态的创建一个class并返回 XECUTE ("(data) s data=##class("_clazzName_"List).%New()",.data) Cache调用存储过程 //获取平均日方法 i action = $zcvt("GetAvgDay", "U") { //得到消息Body的头信息--头信息里面带有传入的参数 s str= msg.body.Read() //根据指定的规则拆分得到参数 s DataSources = $p(str,"^",1) s code = $p(str,"^",2) s value = $p(str,"^",3) //调用存储过程sql语句 s sql="{call ODS_query_day(?)}" //这里i#的意思为:i的个数为参数的个数,#为清除缓存 //i# i一个参数 ii 两个参数 #清除缓存" s procrp =..Adapter.ExecuteProcedure(.rs,.pvalues,sql,"i#",value) //判断SQL执行结果是否有错误 if $$$ISERR(procrp) { s rtnMsg.header.result="False" s rtnMsg.header.reason=##class(%SYSTEM.Status).GetErrorText(procrp) d rtnMsg.XMLExportToStream(.mess,"Message") d pResponse.mess.CopyFrom(mess) Quit $$$OK } //获取结果集 if $IsObject(rs) { s rstable=rs.GetAt(1)//获取结果集中第一个 d rstable.Rewind()//初始化指针 while(rstable.Next()){ s brxm=rstable.Get("病人姓名") s brxb=rstable.Get("病人性别") s brnl=rstable.Get("病人年龄") s ryrq=rstable.Get("入院日期") s dqsj=rstable.Get("当前时间") s zyh=rstable.Get("住院号") s ysxm=rstable.Get("医生名称") s ksmc=rstable.Get("科室名称") s bch=rstable.Get("病床号") s yzyts=rstable.Get("已住院天数") s zfy=rstable.Get("总费用") //把结果放入global s ^MonitorResult(value,zyh)=brxm_"^"_brxb_"^"_brnl_"^"_zyh_"^"_ysxm_"^"_ksmc_"^"_bch_"^"_ryrq_"^"_dqsj_"^"_yzyts_"^"_zfy } }else { d ..ExecLog(sql, "", "0") } s rtnMsg.header.result="True" s rtnMsg.header.reason="" d pResponse.mess.CopyFrom(##class(%GlobalCharacterStream).%New()) Quit $$$OK }