使用游标的“+”附近的语法不正确
Incorrect syntax near '+' using cursor
我不明白我的错误在哪里。
我正在尝试遍历 table 并将存储在 image
数据类型中的 PDF 文件传送到特定位置。
我写了游标,但它在“+”旁边给我一个语法错误
CREATE TABLE #tblPolicyForms
(
FormID INT NOT NULL,
PDF VARBINARY(MAX) NULL,
PDF_FIlename VARCHAR(MAX)
)
INSERT INTO #tblPolicyForms
SELECT
FormID, PDF, PDF_FileName
FROM
[dbo].[tblPolicyForms]
WHERE
FormID IN (19, 20, 21, 22)
--select * from #tblPolicyForms
DECLARE @FormID varchar(4);
DECLARE @FileName VARCHAR(200);
DECLARE FormID_cursor CURSOR FOR
SELECT
FormID, PDF_FIlename
FROM
#tblPolicyForms
WHERE
FormID IN (19, 20, 21, 22)
--where whatever conditions you need to get the FormIDs you want to use
OPEN FormID_cursor
FETCH NEXT FROM FormID_cursor INTO @FormID, @FileName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC master.dbo.xp_cmdshell 'BCP "SELECT PDF FROM [MEJAMES].[dbo].tblPolicyForms " queryout "C:\Users\oserdyuk\Documents\ExportDir\'+@FileName+'" -T -N'
FETCH NEXT FROM FormID_cursor INTO @FormID, @FileName
END
CLOSE FormID_cursor
DEALLOCATE FormID_cursor
使用变量:
DECLARE @cmd NVARCHAR(MAX) = N'BCP "SELECT PDF FROM [MEJAMES].[dbo].tblPolicyForms " queryout "C:\Users\oserdyuk\Documents\ExportDir\'+@FileName+'" -T -N';
EXEC master.dbo.xp_cmdshell @cmd;
来自文档 EXEC:
{ value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
因此您只能传递值(文字)、变量或默认值。在您使用 +
的示例中,您试图传递导致错误的表达式。
注意:每条语句以分号结尾是一种很好的做法。
我不明白我的错误在哪里。
我正在尝试遍历 table 并将存储在 image
数据类型中的 PDF 文件传送到特定位置。
我写了游标,但它在“+”旁边给我一个语法错误
CREATE TABLE #tblPolicyForms
(
FormID INT NOT NULL,
PDF VARBINARY(MAX) NULL,
PDF_FIlename VARCHAR(MAX)
)
INSERT INTO #tblPolicyForms
SELECT
FormID, PDF, PDF_FileName
FROM
[dbo].[tblPolicyForms]
WHERE
FormID IN (19, 20, 21, 22)
--select * from #tblPolicyForms
DECLARE @FormID varchar(4);
DECLARE @FileName VARCHAR(200);
DECLARE FormID_cursor CURSOR FOR
SELECT
FormID, PDF_FIlename
FROM
#tblPolicyForms
WHERE
FormID IN (19, 20, 21, 22)
--where whatever conditions you need to get the FormIDs you want to use
OPEN FormID_cursor
FETCH NEXT FROM FormID_cursor INTO @FormID, @FileName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC master.dbo.xp_cmdshell 'BCP "SELECT PDF FROM [MEJAMES].[dbo].tblPolicyForms " queryout "C:\Users\oserdyuk\Documents\ExportDir\'+@FileName+'" -T -N'
FETCH NEXT FROM FormID_cursor INTO @FormID, @FileName
END
CLOSE FormID_cursor
DEALLOCATE FormID_cursor
使用变量:
DECLARE @cmd NVARCHAR(MAX) = N'BCP "SELECT PDF FROM [MEJAMES].[dbo].tblPolicyForms " queryout "C:\Users\oserdyuk\Documents\ExportDir\'+@FileName+'" -T -N';
EXEC master.dbo.xp_cmdshell @cmd;
来自文档 EXEC:
{ value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
因此您只能传递值(文字)、变量或默认值。在您使用 +
的示例中,您试图传递导致错误的表达式。
注意:每条语句以分号结尾是一种很好的做法。