简单账表服务端插件报parse error、TODO, SET错
金蝶云社区-云社区用户3P654163
云社区用户3P654163
0人赞赏了该文章 1,056次浏览 未经作者许可,禁止转载编辑于2016年06月03日 15:27:43

给客户做简单账表的二次开发,写服务端插件的时候,模仿反编译的应收款账龄分析表插件,写SQL语句,挂到自定义的账表上总是报错,请总部同事帮忙看下问题出在哪,我把系统插件中的一部分代码复制过来改一下也是报错,代码如下:类名和继承:
public class AgeReport : SysReportBaseService

SQL语句代码:
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine(" /*dialect*/ ");

stringBuilder.AppendLine(" DECLARE @I INT;");
stringBuilder.AppendLine(" SET @I=0;");
stringBuilder.AppendLine(" select @I;");

IDBService dBService = ServiceFactory.GetDBService(base.Context);
dBService.Execute(base.Context, stringBuilder.ToString());

报错信息:

查询出现异常。Kingdee.BOS.SQL.Exception.ParserException: parse error. detail message is :
TODO, SET
source sql is :
/*dialect*/
DECLARE @I INT;
SET @I=0;
select @I;
---> Kingdee.BOS.SQL.Exception.ParserException: TODO, SET
在 Kingdee.BOS.SQL.Parser.SqlBlockParser.decl(IList descList)
在 Kingdee.BOS.SQL.Parser.SqlBlockParser.block()
在 Kingdee.BOS.SQL.Parser.SqlStmtParser.stmt()
在 Kingdee.BOS.SQL.Parser.SqlStmtParser.stmtList(IList stmtCol, Token tok)
在 Kingdee.BOS.SQL.TransUtil.getStmtList(String ksql)
--- 内部异常堆栈跟踪的结尾 ---

Server stack trace:
在 Kingdee.BOS.SQL.TransUtil.getStmtList(String ksql)
在 Kingdee.BOS.SQL.TransUtil.Translate(String kSql, Int32 targetDbType, FormatOptions options)
在 Kingdee.BOS.App.Data.AbstractDatabase.CreateCommandByCommandType(CommandType commandType, String commandText, Boolean needTranslate, Int32 commandTimeout)
在 Kingdee.BOS.App.Data.DBUtils.Execute(Context ctx, String strSQL, IEnumerable`1 paramList, Boolean needTranslate)
在 Kingdee.BOS.App.Data.DBUtils.Execute(Context ctx, String strSQL)

Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 Kingdee.BOS.Contracts.IDBService.Execute(Context ctx, String strSQL)
在 Kingdee.K3.FIN.AR.App.Report.AgeReport.GetBeginAgingData(String tmpTableName) 位置 F:\Projects\SaiMoCloudPlugIn\SaiMoCloudPlugIn\AgeReport.cs:行号 309
在 Kingdee.K3.FIN.AR.App.Report.AgeReport.BuilderReportSqlAndTempTable(IRptParams filter, String tableName) 位置 F:\Projects\SaiMoCloudPlugIn\SaiMoCloudPlugIn\AgeReport.cs:行号 159
在 Kingdee.BOS.Core.Report.PlugIn.AbstractSysReportServicePlugIn.CreateTempTable(IRptParams filter, String tablename)
在 Kingdee.BOS.Core.Report.PlugIn.AbstractSysReportServicePlugIn.GetDataForVirtual(IRptParams filter)
在 Kingdee.BOS.Core.Report.PlugIn.AbstractSysReportServicePlugIn.GetData(IRptParams filter)
在 Kingdee.BOS.App.Core.PlugInProxy.SysReportServicePlugInProxy.GetReportData(ReportServiceParameter parameter)
在 Kingdee.BOS.App.Core.SysReportService.GetReportData(ReportServiceParameter parameter)

Exception rethrown at [1]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 Kingdee.BOS.Contracts.ISysReportService.GetReportData(ReportServiceParameter parameter)
在 Kingdee.BOS.ServiceHelper.SysReportServiceHelper.GetReportData(ReportServiceParameter parameter)
在 Kingdee.BOS.Model.Report.SysReportModel.GetData(Int32 start, Int32 rows)
在 Kingdee.BOS.Web.Report.SysReportView.GetListData()
在 Kingdee.BOS.Web.Report.SysReportView.<>c__DisplayClass3d.b__39()