'+ @ busUnit +'AS BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, ''AS JOURNAL_ID, '+ @timestamp +'AS JOURNAL_DT, JOURNAL_LINE, 账户, ALTACCT, DEPTID, OPERATING_UNIT, 产品, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, 关联, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHARTFIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATI STIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP 来自PS_CG_WF_PRIOR_JGN UNION SELECT '+ @ busUnit +'AS BUSINESS_UNIT, TRANSACTION_ID, 'ACTABLE'作为LEDGER_GROUP, '实际'作为LEDGER, '+ @timestamp +'AS ACCOUNTING_DT, 'GEN ERIC'ASPL_JRNL_ID, CASE WHEN'+ @ busUnit +'<> CG_GLACCOUNT2然后CG_GLACCOUNT2 ELSE'+ @ busUnit +'结束为BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, ''AS JOURNAL_ID, '+ @timestamp +'AS JOURNAL_DT, JOURNAL_LINE, 账户, ALTACCT, DEPTID, OPERATING_UNIT, 产品, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, 附属公司, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHART FIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATISTIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP 来自PS_CG_WF_PRIOR_JGN)GL_ENTRIES; ----检查这是否是公司间批次并相应地调用相应的插入语句。 SELECT @IC_Flag = CG_INTERCOMPANY来自PS_CG_WF_PRIOR_JGN; PRINT @IC_Flag; IF(@ IC_Flag ='Y') BEGIN 打印'我是公司间'; EXEC(@Inter_Company); PRINT'从@Inter_company的执行官回来'; 结束 ELSE BEGIN 打印'它不是公司间'; EXEC(@Non_Inter_Company); PRINT'从@Non_Inter_company的执行官回来'; 结束 结束 我尝试了什么: 我有谷歌搜索错误,在BEGIN之后放置LINENO 0试图找到与错误一致,并运行SQL独立。没运气。任何想法都将不胜感激。USE [FMSUAT]GO/****** Object: StoredProcedure [dbo].[sp_Generate_GL_Journals_NEW] Script Date: 11/20/2018 7:57:47 AM ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER OFFGO-- =============================================-- Author:<Author,,Sean Cudd/Kathy Hurley>-- Create date: <Create Date,,11/30/2009, 11/15/2018>-- Description:<Description,,Generate PeopleSoft G/L Journal Entries from the AS400 posted G/L Batches,using work table>-- =============================================ALTER PROCEDURE [dbo].[sp_Generate_GL_Journals_NEW]-- Add the parameters for the stored procedure here@System char(10),@Library char(10),@busUnit char(5),@acctPeriod int = 0,@batchNbr int = 0ASBEGIN LINENO 0-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;DECLARE @SchemaPath varchar(50);DECLARE @timestamp varchar(50);DECLARE @GLAcct char(10);DECLARE @IC_Flag varchar(1);DECLARE @Inter_Company varchar(1000);DECLARE @Non_Inter_Company varchar(1000);DECLARE @Is_It_IC varchar(1000);SET @SchemaPath = dbo.GetAS400SchemaPath(@System) + @Library; SET @IC_Flag = ' ';SET @GLAcct = ' '; SET @timestamp = cast(@acctPeriod as char(6)) + CAST(15 AS CHAR(2));DELETE FROM PS_CG_WF_PRIOR_JGN;EXEC dbo.sp_Generate_Pre_JGEN_file @System, @Library, @busUnit, @acctPeriod, @batchNbr;--- The following insert is for non intercompany batch ---- SET @Non_Inter_Company = "INSERT INTO PS_JGEN_ACCT_ENTRY (SEQUENCENO, BUSINESS_UNIT, TRANSACTION_ID, LEDGER_GROUP, LEDGER, ACCOUNTING_DT, APPL_JRNL_ID, BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, JOURNAL_ID, JOURNAL_DATE, JOURNAL_LINE, ACCOUNT, ALTACCT, DEPTID, OPERATING_UNIT, PRODUCT, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, AFFILIATE, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHARTFIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATISTIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP) SELECT ROW_NUMBER() OVER (ORDER BY TRANSACTION_ID) AS SEQUENCENO, * FROM ( SELECT '" + @busUnit + "' AS BUSINESS_UNIT, TRANSACTION_ID, 'ACTUALS' AS LEDGER_GROUP, 'ACTUALS' AS LEDGER, '" + @timestamp + "' AS ACCOUNTING_DT, 'GENERIC' AS APPL_JRNL_ID, CASE WHEN '" + @busUnit + "' <> CG_GLACCOUNT2 THEN CG_GLACCOUNT2 ELSE '" + @busUnit + "' END AS BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, '' AS JOURNAL_ID, '" + @timestamp + "' AS JOURNAL_DT, JOURNAL_LINE, ACCOUNT, ALTACCT, DEPTID, OPERATING_UNIT, PRODUCT, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, AFFILIATE, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHARTFIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATISTIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP FROM PS_CG_WF_PRIOR_JGN ) GL_ENTRIES ";--- The following is for an intercompany batch SET @Inter_Company = "INSERT INTO PS_JGEN_ACCT_ENTRY (SEQUENCENO, BUSINESS_UNIT, TRANSACTION_ID, LEDGER_GROUP, LEDGER, ACCOUNTING_DT, APPL_JRNL_ID, BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, JOURNAL_ID, JOURNAL_DATE, JOURNAL_LINE, ACCOUNT, ALTACCT, DEPTID, OPERATING_UNIT, PRODUCT, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, AFFILIATE, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHARTFIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATISTIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP) SELECT ROW_NUMBER() OVER (ORDER BY TRANSACTION_ID) AS SEQUENCENO, * FROM ( SELECT '" + @busUnit + "' AS BUSINESS_UNIT, TRANSACTION_ID, 'ACTUALS' AS LEDGER_GROUP, 'ACTUALS' AS LEDGER, '" + @timestamp + "' AS ACCOUNTING_DT, 'GENERIC' AS APPL_JRNL_ID, '" + @busUnit + "' AS BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, '' AS JOURNAL_ID, '" + @timestamp + "' AS JOURNAL_DT, JOURNAL_LINE, ACCOUNT, ALTACCT, DEPTID, OPERATING_UNIT, PRODUCT, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, AFFILIATE, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHARTFIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATISTIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP FROM PS_CG_WF_PRIOR_JGN UNION SELECT '" + @busUnit + "' AS BUSINESS_UNIT, TRANSACTION_ID, 'ACTUALS' AS LEDGER_GROUP, 'ACTUALS' AS LEDGER, '" + @timestamp + "' AS ACCOUNTING_DT, 'GENERIC' AS APPL_JRNL_ID, CASE WHEN '" + @busUnit + "' <> CG_GLACCOUNT2 THEN CG_GLACCOUNT2 ELSE '" + @busUnit + "' END AS BUSINESS_UNIT_GL, FISCAL_YEAR, ACCOUNTING_PERIOD, '' AS JOURNAL_ID, '" + @timestamp + "' AS JOURNAL_DT, JOURNAL_LINE, ACCOUNT, ALTACCT, DEPTID, OPERATING_UNIT, PRODUCT, FUND_CODE, CLASS_FLD, PROGRAM_CODE, BUDGET_REF, AFFILIATE, AFFILIATE_INTRA1, AFFILIATE_INTRA2, CHARTFIELD1, CHARTFIELD2, CHARTFIELD3, PROJECT_ID, CURRENCY_CD, STATISTICS_CODE, FOREIGN_CURRENCY, RT_TYPE, RATE_MULT, RATE_DIV, MONETARY_AMOUNT, FOREIGN_AMOUNT, STATISTIC_AMOUNT, MOVEMENT_FLAG, DOC_TYPE, DOC_SEQ_NBR, DOC_SEQ_DATE, JRNL_LN_REF, LINE_DESCR, IU_SYS_TRAN_CD, IU_TRAN_CD, IU_ANCHOR_FLG, GL_DISTRIB_STATUS, PROCESS_INSTANCE, DTTM_STAMP FROM PS_CG_WF_PRIOR_JGN ) GL_ENTRIES";---- check to see if this is an intercompany batch and call the appropriate insert statement accordingly.SELECT @IC_Flag = CG_INTERCOMPANY FROM PS_CG_WF_PRIOR_JGN;PRINT @IC_Flag;IF (@IC_Flag = 'Y')BEGIN PRINT ' Y it is inter company'; EXEC(@Inter_Company); PRINT 'Back from exec of @Inter_company';ENDELSEBEGIN PRINT ' N its not intercompany' ; EXEC(@Non_Inter_Company); PRINT 'Back from exec of @Non_Inter_company';ENDENDWhat I have tried:I have googled error, placed the LINENO 0 after the BEGIN to try to locate the line with the error, and ran the SQL standalone. No luck. Any thoughts would be greatly appreciated.推荐答案你从哪里复制/粘贴它?向他们(作者)询问你的问题! 此外 - 我们不知道你的数据表是什么样的或任何东西。 换句话说: 你知道你在做什么吗?Where did you copy/paste it from? Ask them (the authors) about your problem!Furthermore - we have no clue as to what your data tables look like or anything.Put another way: have you any idea at all what you are doing?确定的问题:你正在构建的命令超过1800个字符,你将它放入 DECLARE @Non_Inter_Company varchar(1000); 次要警告:变量应该是NVarChar。 可能的问题:连接在一起的连接问题查询。 建议: 1-将变量更改为nvarchar(4000) 2-尝试不连接的项目Definite problem: the command you are building is well over 1800 characters, and you are placing it into DECLARE @Non_Inter_Company varchar(1000);Secondary warning: the variable should be NVarChar.Possible problem: concatenation issues with the pieced together query.Recommendations:1- Change the variable to nvarchar(4000)2- Try without the concatenated items 这篇关于消息102,级别15,状态1,行38的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!