-3
我正在将文件夹中的文件名获取到临时表中。然后我使用一个光标为每个文件名执行一些操作。当我尝试用REPLACE
替换文件名中的.bak字符串时,它将失败并报错 - 必须声明标量变量“@FILENEME”。为什么?如何解决它?REPLACE无法接受varchar变量
码 - 在REPLACE(@FILENEME, '.bak', '')
CREATE TABLE ##FILES(
Name varchar(200),
depth numeric,
isFile numeric
)
--Assumption - the sp xp_dirtree has these columns
- subdirectory, depth, file
INSERT INTO ##FILES
EXEC xp_dirtree 'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\Backup\', 10, 1
DECLARE @FILENAME AS VARCHAR(200)
DECLARE @db AS VARCHAR(200)
DECLARE C CURSOR FOR
SELECT Name
FROM ##FILES
WHERE isFile = 1
OPEN C
FETCH NEXT FROM C INTO @FILENAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @db = REPLACE(@FILENEME, '.bak', '')
print @db
FETCH NEXT FROM C INTO @FILENAME
END
CLOSE C
DEALLOCATE C
我们能否删除这个问题吗?这是一个严重的错误。我们可以将这里留作漫画目的 - 我如何犯了一个蹩脚的错误,以及其他人如何连续回答同样的问题,好像有5种方法可以纠正相同的错字。 – Steam
你无法自己删除它吗? – admdrew
@admdrew - 它有一个upvoted的答案,所以它不能被OP删除。 – ChrisF