首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态sql游标

动态sql游标
EN

Stack Overflow用户
提问于 2014-06-09 09:39:11
回答 2查看 44关注 0票数 0

当我运行以下查询时,会得到“在'.‘’附近有”不正确的语法“。

代码语言:javascript
复制
DECLARE 
@StaffID INT = 4,
@Cursorsql nvarchar(4000);  

SET @Cursorsql = 'DECLARE curStaff CURSOR FOR ';
SET @Cursorsql = @Cursorsql + ' SELECT s.StaffID, o.OfficeName, s.FirstName '; 
SET @Cursorsql = @Cursorsql + ' ' + 's.LastName FROM Staff s  '; 
SET @Cursorsql = @Cursorsql + ' INNER JOIN Offices o ON o.OfficeID = s.OfficeID '; 
SET @Cursorsql = @Cursorsql + ' WHERE (s.OfficeID = @OfficeID OR @OfficeID = 0) '; 
IF @StaffID > 0 
 SET @Cursorsql = @Cursorsql + ' AND s.StaffID = @StaffID '; 
SET @Cursorsql = @Cursorsql + ' ORDER BY s.OfficeID, s.FirstName, s.LastName ';  

exec (@Cursorsql);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-09 09:50:13

你在s.FirstName之后错过了一个逗号

代码语言:javascript
复制
DECLARE 
@StaffID INT = 4,
@Cursorsql nvarchar(4000);  

SET @Cursorsql = 'DECLARE curStaff CURSOR FOR ';
SET @Cursorsql = @Cursorsql + ' SELECT s.StaffID, o.OfficeName, s.FirstName, '; 
SET @Cursorsql = @Cursorsql + ' ' + 's.LastName FROM Staff s  '; 
SET @Cursorsql = @Cursorsql + ' INNER JOIN Offices o ON o.OfficeID = s.OfficeID '; 
SET @Cursorsql = @Cursorsql + ' WHERE (s.OfficeID = @OfficeID OR @OfficeID = 0) '; 
IF @StaffID > 0 
 SET @Cursorsql = @Cursorsql + ' AND s.StaffID = @StaffID '; 
SET @Cursorsql = @Cursorsql + ' ORDER BY s.OfficeID, s.FirstName, s.LastName ';  

exec (@Cursorsql);
票数 0
EN

Stack Overflow用户

发布于 2014-06-09 09:51:14

打印出动态sql并检查语法错误总是一个好主意,也是解决问题的简单方法。在s.FirstNames.LastName列表中缺少一个逗号

试试这个-

代码语言:javascript
复制
DECLARE 
@StaffID INT = 4,
@Cursorsql nvarchar(4000);  

SET @Cursorsql = 'DECLARE curStaff CURSOR FOR ';
SET @Cursorsql = @Cursorsql + ' SELECT s.StaffID, o.OfficeName, s.FirstName, '; 
SET @Cursorsql = @Cursorsql + ' s.LastName FROM Staff s  '; 
SET @Cursorsql = @Cursorsql + ' INNER JOIN Offices o ON o.OfficeID = s.OfficeID '; 
SET @Cursorsql = @Cursorsql + ' WHERE (s.OfficeID = @OfficeID OR @OfficeID = 0) '; 
IF @StaffID > 0 
 SET @Cursorsql = @Cursorsql + ' AND s.StaffID = @StaffID '; 
SET @Cursorsql = @Cursorsql + ' ORDER BY s.OfficeID, s.FirstName, s.LastName ';  
sp_executesql @CursorSql, N'@StaffID int', @StaffID;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24117484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档