'+复制(')附近的语法不正确。字符串')后面的未引号引起了1'

达罗90

我有一个运行大查询的存储过程(SP),在Microsoft SQL Server Management Studio 2014中使用默认参数执行或调试它时,它运行良好。问题是下一个问题。当从VS 2008的Reporting Service工具的“预览”选项卡中的SSRS中执行此SP时,我设置了相同的默认参数,就会出现此错误:

'+复制(')附近的语法不正确。字符串')后按1'的引号引起来。

这是我的整个代码:

set @vlcc_condicitmp = 'where (dfechamovi between convert(datetime,'''+@vlcc_dfechainic+''',103) and convert(datetime,'''+ @vlcc_dfechafina+''',103))'
set @vlcc_condici6 = ' order by '+@vlcc_orden

set @sentsql1_expresion = 'SELECT inmovinven.cnumproduc,Cast ('' '' as char) as nconsresol,inmovinven.ccodmovinv,'+ 
                        'inmovinven.ctipodocum,inmovinven.cllavedocu,'+
                        'inmovinven.dfechamovi,inmovinven.cunimedida,'+
                        'inmovinven.ncantidad,inmovinven.ccodbodega,'+
                        'inmovinven.ccodbodego,inmovinven.npreciouni,'+
                        'inmovinven.npreciotot,inmovinven.nexistante,'+ 
                        'inmovinven.nexistdesp,inmovinven.nprecioant,'+
                        'inmovinven.npreciodes,inmovinven.ctipasient,'+ 
                        'inmovinven.cnumasient,inmovinven.ccuentacon,'+ 
                        'inmovinven.cdescripci,cpdocument.cnumdocume,inproducto.cnumeserie,'+ 
                        'inproducto.cnomproduc,inproducto.ccateprodu,inproducto.clocalizac,'+
                        'fadocument.cnumdocume as cnumfactur,intipmovin.ctipoperad, '+
                        'inmovinven.ccodigousu,intipmovin.cdesmovimi,inmovinven.cconseajus,'' '' as cnomunidad '+ 
                        'FROM #inmovintmp as inmovinven LEFT JOIN '+@basdeDatos+'.dbo.'+'cpdocument ON '+
                        'inmovinven.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
                        +@basdeDatos+'.dbo.'+'inproducto ON inmovinven.cnumproduc = inproducto.cnumproduc '+        
                        'LEFT JOIN '+@basdeDatos+'.dbo.'+'fadocument on inmovinven.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fadocument.nconsdocum))+ltrim(str(fadocument.nconsdocum)) '+ 
                        'inner join '+@basdeDatos+'.dbo.'+'intipmovin on inmovinven.ccodmovinv = intipmovin.ccodmovinv '+ @vlcc_condicitmp + @vlcc_condici1 +' and inmovinven.ncantidad > 0'

                set @sentsql2_expresion = 'SELECT inhmovinve.cnumproduc,Cast ('' '' as char) as nconsresol,inhmovinve.ccodmovinv,'+ 
                        'inhmovinve.ctipodocum,inhmovinve.cllavedocu,'+ 
                        'inhmovinve.dfechamovi,inhmovinve.cunimedida,'+
                        'inhmovinve.ncantidad,inhmovinve.ccodbodega,'+ 
                        'inhmovinve.ccodbodego,inhmovinve.npreciouni,'+ 
                        'inhmovinve.npreciotot,inhmovinve.nexistante,'+ 
                        'inhmovinve.nexistdesp,inhmovinve.nprecioant,'+ 
                        'inhmovinve.npreciodes,inhmovinve.ctipasient,'+ 
                        'inhmovinve.cnumasient,inhmovinve.ccuentacon,'+
                        'inhmovinve.cdescripci,cpdocument.cnumdocume,inproducto.cnumeserie,'+ 
                        'inproducto.cnomproduc,inproducto.ccateprodu,inproducto.clocalizac,'+ 
                        'fahdocumen.cnumdocume as cnumfactur,'+
                        'intipmovin.ctipoperad,inhmovinve.ccodigousu,intipmovin.cdesmovimi,inhmovinve.cconseajus,'''' as cnomunidad '+ 
                        'FROM #inhmovitmp as inhmovinve LEFT JOIN '+@basdeDatos+'.dbo.'+'cpdocument ON '+
                        'inhmovinve.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
                        +@basdeDatos+'.dbo.'+'inproducto ON inhmovinve.cnumproduc = inproducto.cnumproduc '+  
                        'LEFT JOIN '+@basdeDatos+'.dbo.'+'fahdocumen on inhmovinve.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fahdocumen.nconsdocum))+ltrim(str(fahdocumen.nconsdocum)) '+  
                        'inner join '+@basdeDatos+'.dbo.'+'intipmovin on inhmovinve.ccodmovinv = intipmovin.ccodmovinv ' + @vlcc_condicitmp + @vlcc_condici2 +' and inhmovinve.ncantidad > 0'

                IF (@vlcc_ctipoperad = 'I' OR @vlcc_ctipoperad = 'T')
                    BEGIN
                        SET @sentsql3_expresion = 'SELECT inmovinven.cnumproduc,Cast ('' '' as char) as nconsresol,inmovinven.ccodmovinv,'+ 
                            'inmovinven.ctipodocum, inmovinven.cllavedocu,'+
                            'inmovinven.dfechamovi, inmovinven.cunimedida,'+
                            'inmovinven.ncantidad  as ncantida,inmovinven.ccodbodega as ccodbodega,'+  
                            'inmovinven.ccodbodego, inmovinven.npreciouni,'+ 
                            'inmovinven.npreciotot, inmovinven.nexistante,'+ 
                            'inmovinven.nexistdesp, inmovinven.nprecioant,'+ 
                            'inmovinven.npreciodes, inmovinven.ctipasient,'+ 
                            'inmovinven.cnumasient, inmovinven.ccuentacon,'+ 
                            'inmovinven.cdescripci, cpdocument.cnumdocume,inproducto.cnumeserie,'+ 
                            'inproducto.cnomproduc, inproducto.ccateprodu,inproducto.clocalizac,'+
                            'fadocument.cnumdocume as cnumfactur, intipmovin.ctipoperad,'+
                            'inmovinven.ccodigousu,intipmovin.cdesmovimi,inmovinven.cconseajus,'' '' as cnomunidad '+ 
                            'FROM #inmovintmp as inmovinven LEFT JOIN '+@basdeDatos+'.dbo.'+'cpdocument ON '+ 
                            'inmovinven.cllavedocu = cpdocument.cllavedocu INNER JOIN ' 
                            +@basdeDatos+'.dbo.'+'inproducto ON inmovinven.cnumproduc = inproducto.cnumproduc '+
                            'LEFT JOIN '+@basdeDatos+'.dbo.'+'fadocument on inmovinven.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fadocument.nconsdocum))+ltrim(str(fadocument.nconsdocum)) '+  
                            'inner join '+@basdeDatos+'.dbo.'+'intipmovin on inmovinven.ccodmovinv = intipmovin.ccodmovinv '+  
                            + @vlcc_condicitmp + @vlcc_condici3+' AND inmovinven.ccodbodego <> '' '' and inmovinven.ncantidad < 0'
                    END
                ELSE
                    BEGIN
                        SET @sentsql3_expresion = 'SELECT inmovinven.cnumproduc,Cast ('' '' as char) as nconsresol,'+@basdeDatos+'.dbo.'+'inmovinven.ccodmovinv,'+ 
                            'inmovinven.ctipodocum, inmovinven.cllavedocu,'+
                            'inmovinven.dfechamovi, inmovinven.cunimedida,'+ 
                            'inmovinven.ncantidad * -1 as ncantidad, inmovinven.ccodbodego as ccodbodega,'+  
                            'inmovinven.ccodbodego, inmovinven.npreciouni,'+ 
                            'inmovinven.npreciotot, inmovinven.nexistante,'+ 
                            'inmovinven.nexistdesp, inmovinven.nprecioant,'+ 
                            'inmovinven.npreciodes, inmovinven.ctipasient,'+ 
                            'inmovinven.cnumasient, inmovinven.ccuentacon,'+ 
                            'inmovinven.cdescripci, cpdocument.cnumdocume, inproducto.cnumeserie,'+ 
                            'inproducto.cnomproduc, inproducto.ccateprodu, inproducto.clocalizac,'+ 
                            'fadocument.cnumdocume as cnumfactur, intipmovin.ctipoperad,'+
                            'inmovinven.ccodigousu, intipmovin.cdesmovimi,inmovinven.cconseajus,'''' as cnomunidad '+ 
                            'FROM #inmovintmp as inmovinven LEFT JOIN '+@basdeDatos+'.dbo.'+'cpdocument ON '+ 
                            'inmovinven.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
                            +@basdeDatos+'.dbo.'+'inproducto ON inmovinven.cnumproduc = inproducto.cnumproduc '+  
                            'LEFT JOIN '+@basdeDatos+'.dbo.'+'fadocument on inmovinven.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fadocument.nconsdocum))+ltrim(str(fadocument.nconsdocum)) '+ 
                            'inner join '+@basdeDatos+'.dbo.'+'intipmovin on inmovinven.ccodmovinv = intipmovin.ccodmovinv '+ 
                            +@vlcc_condicitmp + @vlcc_condici1 +' AND inmovinven.ccodbodego <> '' ''' 
                    END
                IF (@vlcc_ctipoperad = 'I' OR @vlcc_ctipoperad = 'T')
                    BEGIN
                        SET @sentsql4_expresion ='SELECT inhmovinve.cnumproduc,Cast ('' '' as char) as nconsresol, inhmovinve.ccodmovinv,'+ 
                                'inhmovinve.ctipodocum, inhmovinve.cllavedocu,'+
                                'inhmovinve.dfechamovi, inhmovinve.cunimedida,'+
                                'inhmovinve.ncantidad  as ncantidad, inhmovinve.ccodbodega as ccodbodega,'+ 
                                'inhmovinve.ccodbodego, inhmovinve.npreciouni,'+ 
                                'inhmovinve.npreciotot, inhmovinve.nexistante,'+ 
                                'inhmovinve.nexistdesp, inhmovinve.nprecioant,'+ 
                                'inhmovinve.npreciodes, inhmovinve.ctipasient,'+ 
                                'inhmovinve.cnumasient, inhmovinve.ccuentacon,'+ 
                                'inhmovinve.cdescripci, cpdocument.cnumdocume,  inproducto.cnumeserie,'+ 
                                'inproducto.cnomproduc, inproducto.ccateprodu, inproducto.clocalizac,'+ 
                                'fahdocumen.cnumdocume as cnumfactur,'+
                                'intipmovin.ctipoperad, inhmovinve.ccodigousu, intipmovin.cdesmovimi, inhmovinve.cconseajus,'' '' as cnomunidad '+  
                                'FROM #inhmovitmp as inhmovinve LEFT JOIN '+@basdeDatos+'.dbo.'+'cpdocument ON '+ 
                                'inhmovinve.cllavedocu = cpdocument.cllavedocu INNER JOIN '+
                                'inproducto ON inhmovinve.cnumproduc = inproducto.cnumproduc '+  
                                'LEFT JOIN '+@basdeDatos+'.dbo.'+'fahdocumen on inhmovinve.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fahdocumen.nconsdocum))+ltrim(str(fahdocumen.nconsdocum)) '+ 
                                'inner join '+@basdeDatos+'.dbo.'+'intipmovin on inhmovinve.ccodmovinv = intipmovin.ccodmovinv '+   
                                + @vlcc_condicitmp +@vlcc_condici4 +' AND inhmovinve.ccodbodego <> '' '' AND inhmovinve.ncantidad < 0'
                    END
                ELSE
                        BEGIN
                            SET @sentsql4_expresion = 'SELECT inhmovinve.cnumproduc,Cast ('' '' as char) as nconsresol, inhmovinve.ccodmovinv,'+ 
                                'inhmovinve.ctipodocum, inhmovinve.cllavedocu,'+
                                'inhmovinve.dfechamovi, inhmovinve.cunimedida,'+ 
                                'inhmovinve.ncantidad * - 1 as ncantidad, inhmovinve.ccodbodego as ccodbodega,'+ 
                                'inhmovinve.ccodbodego, inhmovinve.npreciouni, '+ 
                                'inhmovinve.npreciotot, inhmovinve.nexistante, '+ 
                                'inhmovinve.nexistdesp, inhmovinve.nprecioant, '+ 
                                'inhmovinve.npreciodes, inhmovinve.ctipasient, '+ 
                                'inhmovinve.cnumasient, inhmovinve.ccuentacon, '+ 
                                'inhmovinve.cdescripci, cpdocument.cnumdocume, inproducto.cnumeserie,'+ 
                                'inproducto.cnomproduc, inproducto.ccateprodu, inproducto.clocalizac,'+ 
                                'fahdocumen.cnumdocume as cnumfactur,'+
                                'intipmovin.ctipoperad, inhmovinve.ccodigousu, intipmovin.cdesmovimi, inhmovinve.cconseajus,'' as cnomunidad '+  
                                'FROM #inhmovitmp as inhmovinve LEFT JOIN '+@basdeDatos+'.dbo.'+'cpdocument ON '+ 
                                'inhmovinve.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
                                +@basdeDatos+'.dbo.'+'inproducto ON inhmovinve.cnumproduc = inproducto.cnumproduc '+  
                                'LEFT JOIN '+@basdeDatos+'.dbo.'+'fahdocumen on inhmovinve.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fahdocumen.nconsdocum))+ltrim(str(fahdocumen.nconsdocum)) '+  
                                'inner join '+@basdeDatos+'.dbo.'+'intipmovin on inhmovinve.ccodmovinv = intipmovin.ccodmovinv '+   
                                + @vlcc_condicitmp + @vlcc_condici2 + ' AND inhmovinve.ccodbodego <> '' ''' 
                        END
                IF(@vlcc_chkmovdestino ='S')
                    BEGIN
                        SET @sentsql_expresion = @sentsql1_expresion + ' union all (' + @sentsql2_expresion + ')' + @vlcc_condici6                          
                    END
                ELSE
                    BEGIN
                        SET @sentsql_expresion = @sentsql1_expresion + ' union all (' + @sentsql2_expresion + ') union all (' + @sentsql3_expresion + ') union all (' + @sentsql4_expresion + ')' + @vlcc_condici6
                    END

                SET @sentsql2_expresion = 'DROP TABLE #inmovintmp'
                SET @sentsql3_expresion = 'DROP TABLE #inhmovitmp'

                exec sp_executesql @sentsql_expresion                    
                IF @@ROWCOUNT <= 0
                BEGIN
                    exec sp_executesql @sentsql2_expresion                   
                    exec sp_executesql @sentsql3_expresion
                    set @vlci_errorState=1 
                    SET @vlci_errorSeverity=16 
                    SET @cMensajeExc ='No se puede mostrar el reporte'
                    SET @nIdLogExcAG = -1  
                    RAISERROR (@cMensajeExc,@vlci_errorSeverity,@vlci_errorState)
                    return                                                                      
                END

                exec sp_executesql @sentsql2_expresion                   
                exec sp_executesql @sentsql3_expresion

请帮助我,我会尽一切努力,错误仍然存​​在。我尝试播放跳过的引号('),以为我遗漏了一些内容,但一无所获。谢谢

达罗90

解决方案是发送正确的参数,不要忘记任何人。我下一个:

  1. 在SQL Server Management Studio的“工具”选项卡中打开Profiler工具。
  2. 在“预览”选项卡中运行报告。
  3. 捕获使用其参数和值调用的sql语句。
  4. 使用以下参数运行SP

之后,SQL Server Management Studio显示与SSRS相同的错误,我发现问题出在参数中。然后,我检查了参数并发现我正在用空字符串放入其中一个参数。这是一个示例图像

谢谢您的快速解答

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

's'附近的语法不正确。字符串后的右引号

来自分类Dev

's' 附近的语法不正确。字符串 ')' 后的非封闭引号

来自分类Dev

Wcf 休息服务 {"字符串 '{Account_Number}16' 后的未闭合引号。\r\n'{Account_Number}16' 附近的语法不正确。"}

来自分类Dev

SQL OpenQuery字符串附近的语法不正确

来自分类Dev

PHP-Strlen返回由引号引起的不正确的字符串长度

来自分类Dev

在动态SQL中,“未封闭的引号”和“'附近的语法不正确”

来自分类Dev

SSDT <password>预期ID或加引号的ID附近的语法不正确

来自分类Dev

字符串赋值给定。上面的代码中输入字符串的格式不正确

来自分类Dev

为什么此复制命令的语法不正确?

来自分类Dev

“ FormatException未由用户代码处理”输入字符串的格式不正确

来自分类Dev

输入的字符串格式不正确。如果用户未插入任何值

来自分类Dev

消息102,级别15,状态1,第3行'+'附近的语法不正确。5

来自分类Dev

错误消息156,级别15,状态1,关键字'CONTINUE'附近的语法不正确

来自分类Dev

消息102,级别15,状态1,第9行在“-”附近的语法不正确

来自分类Dev

TM1:错误:“ |”附近的语法不正确 (将数值插入sql查询)

来自分类Dev

消息102,级别15,状态1,第2行','附近的语法不正确错误

来自分类Dev

关键字“ d1”附近的语法不正确

来自分类Dev

消息102,级别15,状态1,第34行'附近的语法不正确。

来自分类Dev

错误编号:102,状态:1,类别:15 ',' 附近的语法不正确

来自分类Dev

将文字编码不正确的字符串(例如,“±”)转换为ISO-8859-1(Latin1)H

来自分类Dev

消息 102,级别 15,状态 1,第 1 行“日期”附近的语法不正确。在更新查询中

来自分类Dev

消息102,级别15,状态1,第3行,带有sp_executesql的''附近的语法不正确

来自分类Dev

使用foreach循环容器在表中创建新列-无法解决“'@ P1'附近的语法不正确”错误

来自分类Dev

消息102,级别15,状态1,第3行,带有sp_executesql的''附近的语法不正确

来自分类Dev

消息156,级别15,状态1,第2行关键字“ ORDER”附近的语法不正确

来自分类Dev

错误:消息 102,级别 15,状态 1,过程 InsertCustomers,第 30 行“THROW”附近的语法不正确

来自分类Dev

”附近的语法不正确

来自分类Dev

')附近的语法不正确;

来自分类Dev

''附近的语法不正确

Related 相关文章

  1. 1

    's'附近的语法不正确。字符串后的右引号

  2. 2

    's' 附近的语法不正确。字符串 ')' 后的非封闭引号

  3. 3

    Wcf 休息服务 {"字符串 '{Account_Number}16' 后的未闭合引号。\r\n'{Account_Number}16' 附近的语法不正确。"}

  4. 4

    SQL OpenQuery字符串附近的语法不正确

  5. 5

    PHP-Strlen返回由引号引起的不正确的字符串长度

  6. 6

    在动态SQL中,“未封闭的引号”和“'附近的语法不正确”

  7. 7

    SSDT <password>预期ID或加引号的ID附近的语法不正确

  8. 8

    字符串赋值给定。上面的代码中输入字符串的格式不正确

  9. 9

    为什么此复制命令的语法不正确?

  10. 10

    “ FormatException未由用户代码处理”输入字符串的格式不正确

  11. 11

    输入的字符串格式不正确。如果用户未插入任何值

  12. 12

    消息102,级别15,状态1,第3行'+'附近的语法不正确。5

  13. 13

    错误消息156,级别15,状态1,关键字'CONTINUE'附近的语法不正确

  14. 14

    消息102,级别15,状态1,第9行在“-”附近的语法不正确

  15. 15

    TM1:错误:“ |”附近的语法不正确 (将数值插入sql查询)

  16. 16

    消息102,级别15,状态1,第2行','附近的语法不正确错误

  17. 17

    关键字“ d1”附近的语法不正确

  18. 18

    消息102,级别15,状态1,第34行'附近的语法不正确。

  19. 19

    错误编号:102,状态:1,类别:15 ',' 附近的语法不正确

  20. 20

    将文字编码不正确的字符串(例如,“±”)转换为ISO-8859-1(Latin1)H

  21. 21

    消息 102,级别 15,状态 1,第 1 行“日期”附近的语法不正确。在更新查询中

  22. 22

    消息102,级别15,状态1,第3行,带有sp_executesql的''附近的语法不正确

  23. 23

    使用foreach循环容器在表中创建新列-无法解决“'@ P1'附近的语法不正确”错误

  24. 24

    消息102,级别15,状态1,第3行,带有sp_executesql的''附近的语法不正确

  25. 25

    消息156,级别15,状态1,第2行关键字“ ORDER”附近的语法不正确

  26. 26

    错误:消息 102,级别 15,状态 1,过程 InsertCustomers,第 30 行“THROW”附近的语法不正确

  27. 27

    ”附近的语法不正确

  28. 28

    ')附近的语法不正确;

  29. 29

    ''附近的语法不正确

热门标签

归档