此查询中不存在SQL - 是否可能

时间:2012-10-21 04:45:23

标签: sql sql-server

这是我的脚本 - 它只是查找与人员行关联的图像文件。

现在,如果查询运行时没有明显的.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

2 个答案:

答案 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

祝你好运!!