我正在尝试检查文件是否存在,并将结果存储在变量中。我在等变量 @file_exists
是真是假,但我得到了一个错误:
将nvarchar值“xp\u fileexist c:\myfile\u 20200521.xls”转换为数据类型int时,转换失败
我做错了什么?
DECLARE @filepath VARCHAR(MAX),
@file_exists INT = 0,
@sql VARCHAR(MAX);
SET @filepath = (SELECT CONCAT('C:\ABC\myfile_',convert(varchar,getdate(),112),'.xls'));
SET @sql = N'xp_fileexist '+@filepath+ N', '+@file_exists+ N' OUT'
EXEC sp_executesql @sql
IF(@file_exists = 1)
PRINT 'File exists'
2条答案
按热度按时间6ju8rftf1#
您遇到了数据类型优先的情况。声明
包含
@file_exists
被宣布为INT
,因此所有字符串都需要转换为INT
用于加法的值。你想要的是:
请注意,在
Convert
有一个长度。5q4ezhmt2#
最简单的解决办法是
concat()
功能:那样的话,
+
不会被解释为字符串。您还可以将值作为参数传入,这将是推荐的。