Procedure persistindo uma lista de valores
Bom dia
Preciso criar uma procedure que receba uma lista de itens e persista no banco, a lista terá um Id e o valor do produto, no c# = Dictionary<int, decimal>. Alguém sabe como fazer uma procedure desse tipo?
Valew
Preciso criar uma procedure que receba uma lista de itens e persista no banco, a lista terá um Id e o valor do produto, no c# = Dictionary<int, decimal>. Alguém sabe como fazer uma procedure desse tipo?
Valew
Pedro Maitan
Curtidas 0
Respostas
Joel Rodrigues
20/01/2012
Aqui vai um exemplo de um procedure que recebe uma tabela e apenas lista seus registros (SELECT *).
Primeiramente, é preciso criar um tipo de dados que herda do tipo TABLE. Esse tipo de dados será uma tabela com a estrutura que você precisa.
Feito isso, crie o procedure que recebe um parâmetro do tipo que você acabou de criar:
Agora, um exemplo de como utilizar:
Espero que sirva.
Primeiramente, é preciso criar um tipo de dados que herda do tipo TABLE. Esse tipo de dados será uma tabela com a estrutura que você precisa.
CREATE TYPE TabelaParametro AS TABLE ( ID INT, VALOR DECIMAL(8,2) ) GO
Feito isso, crie o procedure que recebe um parâmetro do tipo que você acabou de criar:
CREATE PROCEDURE LISTAR @TABELA TabelaParametro READONLY --tem que ter o READONLY, pois os dados de uma tabela passada como parâmetro serão apenas para consulta AS BEGIN SELECT * FROM @TABELA END
Agora, um exemplo de como utilizar:
DECLARE @MinhaTabela TabelaParametro INSERT INTO @MinhaTabela VALUES (1, 10) INSERT INTO @MinhaTabela VALUES (2, 13.4) INSERT INTO @MinhaTabela VALUES (3, 25.8) INSERT INTO @MinhaTabela VALUES (4, 129.78) EXEC LISTAR @MinhaTabela
Espero que sirva.
GOSTEI 0
Joel Rodrigues
20/01/2012
Ah, esse tipo de parâmetro foi introduzido no SQL Server 2008.
GOSTEI 0
Marco Pinheiro
20/01/2012
Se entendi, uma outra maneira seria assim:
CREATE PROCEDURE teste
@ID INT,
@VALOR MONEY
BEGIN
condições desejadas....
END
GO
EXEC teste 1, 25.80
GO
CREATE PROCEDURE teste
@ID INT,
@VALOR MONEY
BEGIN
condições desejadas....
END
GO
EXEC teste 1, 25.80
GO
GOSTEI 0
Pedro Maitan
20/01/2012
A sugestão do Joel Rodrigues parece ser a mais adequada ao meu problema, porém não estou conseguindo criar esse tipo no banco, está me gerando o seguinte error quando executa CREATE TYPE TabelaParametro AS TABLE (....):
Sintaxe incorreta próxima à palavra-chave AS.
Sintaxe incorreta próxima à palavra-chave AS.
GOSTEI 0