这是我的脚本 - 它只是查找与人员行关联的图像文件。
现在,如果查询运行时没有明显的.jpg,则会显示错误:
Msg 4860,Level 16,State 1,Line 1
无法批量加载。文件" C:\ Dev \ ClientServices \ Defense \ RAN \ Shore \ Config \ Photos \ 002054.2009469432270600.001.jpg"不存在。
有没有办法将此查询写入
IF not exists then set id_number = '002054.2009469432270427.001'
因此,如果没有图片,任何行都会显示此照片。
ALTER
procedure [dbo].[as_ngn_sp_REP_PH108_photo] (@PMKEYS nvarchar(50))
AS
---exec [as_ngn_sp_REP_PH108_photo] '8550733'
SET
NOCOUNT ON
DECLARE @PATH AS NVARCHAR(255)
DECLARE @ID_NUMBER NVARCHAR(27)
DECLARE @SQL AS NVARCHAR(MAX)
EXEC DB_GET_DB_SETTING'STAFF PICTURE FILE LOCATION', 0, @PATH OUTPUT
IF RIGHT(@PATH,1) <> '\'
SET @PATH = @PATH + '\'
SELECT @ID_NUMBER = ID_NUMBER FROM aView_person WHERE EXTRA_CODE_1 = @PMKEYS
SET @PATH = @PATH + @ID_NUMBER + '.jpg'
SET @SQL = 'SELECT ''Picture1'' [Picture], BulkColumn FROM OPENROWSET(Bulk ''' + REPLACE(@PATH,'''','''''') + ''', SINGLE_BLOB) AS RAN'
EXEC SP_EXECUTESQL @SQL
答案 0 :(得分:2)
您可以将代码更改为按以下方式工作:
SET @PATH = @PATH + isnull(@ID_NUMBER,'002054.2009469432270427.001') + '.jpg'
如果未找到@Id_Number,则该值将为null,因此我们将null替换为默认ID。
答案 1 :(得分:-1)
我猜你需要在SQL Server中检查文件是否存在。查找以下帖子,了解SQL Server中的可能性。这个人使用内置的 xp_fileexist 存储过程来解决问题。
<强> File Validation in SQL Server with xp_fileexist stored procedure 强>
祝你好运!!