sql-server - SQL 错误 : The multi-part identifier . .. 无法绑定(bind)

标签 sql-server stored-procedures

我目前在 SQL Server 中遇到这个问题,无法弄清楚问题出在哪里。

我正在为以下代码使用存储过程:

DECLARE @cSql nVARCHAR(1000)

SET @cSql = 'SELECT  
            [A].[REC_ID], 
            [A].[ADJUSTMENT_REC_ID], 
            [A].[ITEM_REC_ID], 
            [B].[CODE] [ITEM_CODE],
            [B].[ALIAS_NAME] [ITEM_NAME], 
            [A].[WAREHOUSE_REC_ID], 
            [C].[CODE] [WAREHOUSE_CODE], 
            [C].[NAME] [WAREHOUSE_NAME], 
            [A].[qty_before_basic_uom], 
            [A].[qty_before_uom_1], 
            [A].[qty_adjust_basic_uom], 
            [A].[qty_adjust_uom_1], 
            [A].[qty_after_basic_uom], 
            [A].[qty_after_uom_1], 
            [A].[basic_uom], 
            [A].[uom_1], 
            [A].[ADJUST_VALUE], 
            [A].[cogs_adjust], 
            [A].[cogs_adjust_total], 
            [A].[asset_account_rec_id], 
            [A].[debit_account_rec_id],
            [A].[credit_account_rec_id], 
            [A].[remark], 
            [A].[record_version], 
            [A].[void_status], 
            [A].[void_reason], 
            [A].[void_datetime], 
            [A].[void_user_rec_id], 
            [A].[create_datetime], 
            [A].[create_user_rec_id], 
            [A].[edit_datetime],
            [A].[edit_user_rec_id], 
            [A].[delete_datetime], 
            [A].[delete_user_rec_id] 
            INTO [' + @cTemp + '] 
            FROM [IM_trsInventoryAdjustment_Detail] [A] 
            JOIN [IM_mstInventoryItem] [B] ON
               [B].[REC_ID] = [A].[item_rec_id] 
            JOIN [IM_mstWarehouse] [C] ON
               [C].[REC_ID] = [A].[warehouse_rec_id] 
            WHERE 1=0;'

EXEC sp_executeSQL @cSql

一旦我执行查询,SQL Server 就会在每一列上弹出“多部分标识符”错误。

你能帮我定位一下我的错误在哪里吗??

附言我正在使用动态查询,因为我正在向其注入(inject)数据的临时表会不断变化......

最佳答案

天哪,唯一的问题是我的变量不够长,无法包含整个命令。

这是我用 PRINT 替换 EXEC 时的结果:

SELECT  
        [A].[REC_ID], 
        [A].[ADJUSTMENT_REC_ID], 
        [A].[ITEM_REC_ID], 
        [B].[CODE] [ITEM_CODE],
        [B].[ALIAS_NAME] [ITEM_NAME], 
        [A].[WAREHOUSE_REC_ID], 
        [C].[CODE] [WAREHOUSE_CODE], 
        [C].[NAME] [WAREHOUSE_NAME], 
        [A].[qty_before_basic_uom], 
        [A].[qty_before_uom_1], 
        [A].[qty_adjust_basic_uom], 
        [A].[qty_adjust_uom_1], 
        [A].[qty_after_basic_uom], 
        [A].[qty_after_uom_1], 
        [A].[basic_uom], 
        [A].[uom_1], 
        [A].[ADJUST_VALUE], 
        [A].[cogs_adjust], 
        [A].[cogs_adjust_total], 
        [A].[asset_account_rec_id], 
        [A].[debit_account_rec_id],
        [A].[credit_account_rec_id], 
        [A].[remark], 
        [A].[record_version], 
        [A].[void_status], 
        [A].[void_reason], 
        [A].[void_datet

这就是我所做的。我改变了:

DECLARE @cSQL NVARCHAR(1000)

DECLARE @cSQL NVARCHAR(4000)

而且效果很好。错误消失了,我现在可以继续处理其他错误。

感谢评论和输入!!

关于sql-server - SQL 错误 : The multi-part identifier . .. 无法绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42805996/

相关文章:

sql - SQL Server 中按两列计数?

mysql - 需要创建 MySQL 过程以根据条件从表中获取数据并将它们插入到另一个表中

sql - 如何使用查询在不同列中查找相同值的出现

sql - 删除作为另一个表的外键的主键行

c# - 在 C# 中执行更新存储过程

java - 如何处理两个存储过程,一个返回单个值,另一个返回行?

c# - EF逆向工程代码优先和存储过程

sql-server - 计算数据库中的存储过程?

sql - 将 SQL 列中的分隔值拆分为多行

php - 由于单引号无法将字符串插入数据库