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

24/10/2017

0

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

Responder

Post mais votado

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())

Luiz Santos

Luiz Santos
Responder

Mais Posts

24/10/2017

Chromusmaster

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar