#Include vhLib.Macro PrepareSQL(Query) new qHandler set qHandler=##class(%ResultSet).%New("%DynamicQuery:SQL") new flagPrepared set flagPrepared = qHandler.Prepare(Query) if 'flagPrepared set qHandler = "" quit qHandler ExecDynQuery(Query,Param) new qHandler set qHandler=##class(%ResultSet).%New("%DynamicQuery:SQL") new flagPrepared set flagPrepared = qHandler.Prepare(Query) if 'flagPrepared { Do ##class(vhLib.Logger).%New("PrepareQuery").ErrorMail("Can not prepare query '"_Query_"'") new Exception set Exception = ##class(TECH.Exceptions.StatusException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),"Can not prepare query '"_Query_"'",flagPrepared) Do ##class(TECH.ExceptionHandler).Throw(Exception) } set Param = $get(Param) if $length(Param) { if $listlength(Param) = 1 { do qHandler.Execute($listget(Param,1)) } else { new qParam set qParam = """"_$listget(Param,1)_"""" new Counter for Counter = 2 : 1 : $listlength(Param) set qParam = qParam _ ",""" _ $listget(Param,Counter)_"""" xecute "do qHandler.Execute("_qParam_")" } } else { do qHandler.Execute() } quit qHandler ;--------------------------------------------------------------------------------------------------------------------- ExecDynQueryCRLF(Query,Param,DataCount,amItems) new result set result = "" new qHandler set qHandler = $$ExecDynQuery($get(Query),$get(Param)) new ItemCount set ItemCount = 0 set DataCount = $get(DataCount,0) set amItems = $get(amItems,0) if $length(qHandler) { while qHandler.Next() { if DataCount = 0 { set result = result _ qHandler.GetData(1) _ $$$CRLF } else { for Counter = 1 : 1 : DataCount set result = result _ qHandler.GetData(Counter) _ $C(9) set result = result _ $$$CRLF } set ItemCount = $increment(ItemCount) if ( amItems > 0 ) , ( ItemCount = amItems ) do qHandler.Close() }} do qHandler.Close() quit result ;--------------------------------------------------------------------------------------------------------------------- ListExecDynQuery(Query,Param) new result set result = $$ExecDynQueryCRLF(Query,$g(Param)) if $length(result) set result = $$PiecesToList^vhLib(result,$$$CRLF) quit result ;--------------------------------------------------------------------------------------------------------------------- ListIDsExecDynQuery(Query,Param) new result set result = "" new qHandler set qHandler = $$ExecDynQuery($get(Query),$get(Param)) if $length(qHandler) { while qHandler.Next() { set result = result _ $LB(qHandler.Get("ID")) } } quit result ;--------------------------------------------------------------------------------------------------------------------- IDsExecDynQuery(Query,Param) new result set result = "" new qHandler set qHandler = $$ExecDynQuery($get(Query),$get(Param)) if $length(qHandler) { while qHandler.Next() { set result = result _ qHandler.Get("ID") _ $$$CRLF } } quit result ;---------------------------------------------------------------------------------------------------------------------