【发布时间】: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