Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Passar "array" para variável numa SP

$
0
0

Tenho essa SP criada com ajuda dos colegas do fórum. Ela está funcionando.

 

Agora preciso acrescentar outra saída para ler na aplicação.

Porém, preciso ter uma espécie de array com os valores de uma das colunas da tabela temporária (#del_ItensTabPrincipal)

ou da tabela física mesmo (tabPrincipal).

 

Se eu definir o valor de uma variável (devidamente declarada) como o resultado de um SELECT,

Set @NomeArquivo = (SELECT CampoQuePreciso FROM #del_ItensTabPrincipal)

ocorre erro,

 

"A subconsulta retornou mais de 1 valor.

Isso não é permitido quando a subconsulta segue um =, !=, <, <= , >, >= ou quando ela é usada como uma expressão."

 

Abaixo a SP (que está funcionando) na íntegra

USE [banco]
GO
/****** Object:  StoredProcedure [dbo].[minha_sp]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[minha_sp] @IdItem Int, @CodServ Int, @respostaSP VARCHAR(200) OUTPUT
AS
BEGIN TRANSACTION
IF object_id('tempdb..#del_ItensTabPrincipal') IS NOT NULL 
BEGIN 
DROP TABLE #del_ItensTabPrincipal  
END 
SELECT Sel.idTabPrincipal AS PK 
INTO #del_ItensTabPrincipal  
FROM tabPrincipal AS Sel 
LEFT OUTER JOIN 
tabSecundaria 
ON 
Sel.idTabPrincipal = tabSecundaria.FK 
WHERE  
Sel.idTabPrincipal =  @IdItem 

DELETE 
tabPrincipal 
FROM 
tabPrincipal AS C INNER JOIN #del_ItensTabPrincipal AS DelCurso 
ON 
C.idTabPrincipal = DelCurso.PK 

DELETE 
tabSecundaria 
FROM 
tabSecundaria AS M 
INNER JOIN  
#del_ItensTabPrincipal AS DelMod 
ON  
M.FK = DelMod.PK 

DELETE
FROM tabAuxiliar
WHERE CodReg = @IdItem
AND
cds = @CodServ

IF(@@error = 1)
BEGIN
ROLLBACK TRANSACTION 
SET @respostaSP ='Desculpe, ocorreu um erro. A operação não pôde ser realizada.' 
PRINT @respostaSP
RETURN
END
SET @respostaSP ='Operação bem-sucedida.' 
COMMIT TRANSACTION

Valew!


Viewing all articles
Browse latest Browse all 14190