gpt4 book ai didi

sql-server - SQL Server : Msg 102, 级别 15,状态 1,第 2 行 '=' 附近语法不正确

转载 作者:行者123 更新时间:2023-12-02 23:17:16 26 4
gpt4 key购买 nike

我正在编写一个存储过程,并将表名称作为参数传递,但在这部分出现错误:

DECLARE 
@TableA nvarchar(255)='TableA',
@DOCID1 nvarchar(MAX),
@DOCID2 int;

EXEC ('
SELECT TOP (1) '+ @DOCID1 +'=DOCID1,'+ @DOCID2 +'=DOCID2
FROM [' + @TABLEA + ']
ORDER BY DOCID2')

运行此查询后,出现此错误:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '='

我已经尝试过,但无法查明错误,此时我需要一些帮助..

最佳答案

我相信在执行 SQL 语句之前,您必须将其作为一个整体连接在一起:

DECLARE 
@TableA nvarchar(255)='TableA',
@DOCID1 nvarchar(MAX),
@SqlStmt NVARCHAR(500),
@DOCID2 int;

SET @SqlStmt = N'SELECT TOP (1) ' + @DOCID1 + N' = DOCID1, ' + @DOCID2 + N' = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';

EXEC (@SqlStmt)

据我记得,EXEC 命令中不能有表达式和计算 - 事先准备好语句,然后执行它

另外,我不完全确定你的这些变量包含什么 - @DocID1@DocID2 - 你想设置它们的值,还是它们包含要设置的另一个变量的名称??

更新:如果您确实想设置@DocID1@DocID2的值,那么您的查询一开始就是错误的 -那么你需要这样的东西:

DECLARE 
@TableA nvarchar(255) = 'TableA',
@SqlStmt NVARCHAR(500);

SET @SqlStmt =
N'DECLARE @DocID1 NVARCHAR(MAX), @DocID2 INT; ' +
N'SELECT TOP (1) @DOCID1 = DOCID1, @DOCID2 = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';

EXEC (@SqlStmt)

但是,这两个变量的作用域内部是动态执行的 SQL,并且不可用于脚本的“外部”。

关于sql-server - SQL Server : Msg 102, 级别 15,状态 1,第 2 行 '=' 附近语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20234841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com