SQL SERVER - Inserto dentro de função e CASE

SQL Server

SQL

Banco de Dados

24/10/2017

Tenho uma função em SQL que exporta fotos do banco TOTVS:
CREATE FUNCTION EXPORTAIMAGEMALUNO(@RA VARCHAR(MAX))
RETURNS VARCHAR(MAX)
as
BEGIN
DECLARE @pctStr INT
DECLARE @image VARBINARY(MAX)
DECLARE @MENSAGEM VARCHAR(MAX)
SET @image= (SELECT IMAGEM FROM GIMAGEM
				INNER JOIN PPESSOA ON
					PPESSOA.IDIMAGEM=GIMAGEM.ID
				INNER JOIN SALUNO ON
					SALUNO.CODPESSOA=PPESSOa.CODIGO
				WHERE SALUNo.RA=@RA)
DECLARE @filePath VARCHAR(8000)
SET @filePath = 'C:\\FOTOS\\pessoa_'+CONVERT(VARCHAR,CONVERT(INT,@RA))+'.jpg'
EXEC sp_OACreate 'ADODB.Stream', @pctStr OUTPUT
EXEC sp_OASetProperty @pctStr, 'Type', 1
EXEC sp_OAMethod @pctStr, 'Open'
EXEC sp_OAMethod @pctStr,  'Write', NULL, @image
EXEC sp_OAMethod @pctStr, 'SaveToFile', NULL,@filePath, 2
EXEC sp_OAMethod @pctStr, 'Close'
EXEC sp_OADestroy @pctStr
SET @MENSAGEM=(SELECT CASE WHEN @IMAGE IS NULL THEN 'ERRO!'
				ELSE (INSERT INTO [DMPACESSO_V100].[DBO].UNI_FOTOSDIMEP VALUES('pessoa_'+Convert(INT,@RA)+'.jpg',GETDATE()))
				END)
RETURN @MENSAGEM
END


So que ao tentar recriar a função da um erro logo no insert. Ou seja, nesse trecho:
SET @MENSAGEM=(SELECT CASE WHEN @IMAGE IS NULL THEN 'ERRO!'
				ELSE (INSERT INTO [DMPACESSO_V100].[DBO].UNI_FOTOSDIMEP VALUES('pessoa_'+Convert(INT,@RA)+'.jpg',GETDATE()))
				END)

Alguém sabe me dizer se há como fazer da maneira que preciso ou há outra forma ?
Chromusmaster

Chromusmaster

Curtidas 0

Melhor post

Luiz Santos

Luiz Santos

24/10/2017

Chromusmaster

Você teria que fazer assim:

IF @IMAGE IS NULL
      SET @MESSAGE = 'ERRO'
ELSE
      INSERT INTO [DMPACESSO_V100].[DBO].UNI_FOTOSDIMEP VALUES('pessoa_'+Convert(INT,@RA)+'.jpg',GETDATE())
GOSTEI 1

Mais Respostas

Chromusmaster

Chromusmaster

24/10/2017

Vou tentar, mas dessa aneira funciona ? Acredito que não pode ser feito insert dessa maneira dentro de função, pode ?
GOSTEI 0
POSTAR