【问题标题】:Error inserting into a table where data does not exist插入数据不存在的表时出错
【发布时间】:2021-06-21 12:24:06
【问题描述】:

我在我的 SQL Server 表中添加了一个名为 Source 的新列。我想在存储过程中用 MP 填充该列,因为它在原始表中不存在。我尝试了以下代码几种方法,但我一直收到错误

“MP”附近的语法不正确

我做错了什么?这以前有效,现在无效。由于原始数据库不在此服务器上,因此我必须进行开放式查询,直到我尝试添加此列为止。

CREATE PROCEDURE [dbo].[sp_AC_PRODUCT]
AS
BEGIN
    SET NOCOUNT ON;
    TRUNCATE TABLE [dbo].[AC_PRODUCT_]
    
    INSERT INTO [dbo].[ARIES_AC_PROPDUCT] (SOURCE, PROPNUM, P_DATE, OIL, GAS)
        SELECT 
            'MP' as SOURCE, PROPNUM, P_DATE, OIL, GAS
        FROM  
            OPENQUERY(ARLPSQL1, 'SELECT DISTINCT 'MP' PROPNUM, P_DATE, OIL, GAS)    
                                 FROM [ARLP_ARIES_MASTER].[dbo].[AC_PRODUCT]');
END
GO

【问题讨论】:

  • 投票结束是印刷错误。您没有在文字字符串中转义单引号。 'MP' 应该是 ''MP''(并且突出显示的语法也非常清楚地突出了问题)。
  • 好的,我现在更改了它,我收到以下错误 Invalid column name ''MP'' 有什么想法吗?
  • 谢谢,我得到了纠正,现在可以工作了。再次感谢!
  • 旁注:您应该为您的存储过程使用sp_ 前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_ 并使用其他东西作为前缀 - 或者根本不使用前缀!
  • 好的,感谢您提供我不知道的信息。我就拿出sp

标签: sql sql-server-2012


【解决方案1】:

您可以从 openquery 中删除“mp”,因为它是一个静态值:

CREATE PROCEDURE [dbo].[sp_AC_PRODUCT]
AS
    BEGIN
        SET NOCOUNT ON;
        TRUNCATE TABLE [dbo].[AC_PRODUCT_];

        INSERT INTO [dbo].[ARIES_AC_PROPDUCT]
            (
                SOURCE
                , PROPNUM
                , P_DATE
                , OIL
                , GAS
            )
        SELECT
            'MP' AS SOURCE
            , PROPNUM
            , P_DATE
            , OIL
            , GAS
        FROM
            OPENQUERY
                (ARLPSQL1, 'SELECT DISTINCT
                                 PROPNUM,
                                P_DATE,
                                OIL,
                                GAS)    
                            FROM [ARLP_ARIES_MASTER].[dbo].[AC_PRODUCT]'
                );
    END;
GO

【讨论】:

  • 谢谢 我得到这个工作不知道如何结束这个问题?
猜你喜欢
  • 1970-01-01
  • 2014-02-07
  • 2012-10-26
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
相关资源
最近更新 更多