0
私は以下のストアドプロシージャを持っています。 TicketID
には複数の画像が含まれていますが、IN
の文はここで動作しますか?すべての答えをよろしく!イメージの列から複数のイメージをエクスポートする
CREATE PROCEDURE dbo.ExportImage (
@ImgName NVARCHAR (100)
,@ImageFolderPath NVARCHAR(1000)
,@Filename NVARCHAR(1000)
)
AS
BEGIN
DECLARE @ImageData VARBINARY (max);
DECLARE @Path2OutFile NVARCHAR (2000);
DECLARE @Obj INT
SET NOCOUNT ON
SELECT @ImageData = (
SELECT convert (VARBINARY (max), ImgData, 1)
FROM Images
WHERE TicketID = @ImgName
);
SET @Path2OutFile = CONCAT (
@ImageFolderPath
,'\'
, @Filename
);
BEGIN TRY
EXEC sp_OACreate 'ADODB.Stream' ,@Obj OUTPUT;
EXEC sp_OASetProperty @Obj ,'Type',1;
EXEC sp_OAMethod @Obj,'Open';
EXEC sp_OAMethod @Obj,'Write', NULL, @ImageData;
EXEC sp_OAMethod @Obj,'SaveToFile', NULL, @Path2OutFile, 2;
EXEC sp_OAMethod @Obj,'Close';
EXEC sp_OADestroy @Obj;
END TRY
BEGIN CATCH
EXEC sp_OADestroy @Obj;
END CATCH
SET NOCOUNT OFF
END
これは私が実行したクエリです:
exec dbo.ExportImage '2042','C:\ExpImg','2042.jpg'
ERRORMSG:
サブクエリは複数の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。
私はこれを実行すると、私はまだ一つだけの画像がdbo.ExportImage '2042' --execエクスポートされます、 'C:\ ExpImage、' testexport.jpg」か私はこれを変更する必要がありますか? – wddg
これでエラーは発生しません。私は、なぜあなたは1つの画像しか得られないのかという理由は、あなたがいつも同じ@ImageFolderPath \ @ FileNameに同じイメージを何度も上書きすることだと思います –