Fórum Retorno em Delphi do dataset de uma store procedure de tabuada #411857

24/01/2012

0

Pessoal, preciso retornar no delphi em um listbox o resultado dessa store procedure:
USE [Loja]
GO
/****** Object:  StoredProcedure [dbo].[CalcularTabuada2]    Script Date: 01/24/2012 00:32:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[CalcularTabuada2]

@numero int,
@linha varchar(30) output
AS

DECLARE @contador int
DECLARE @tabuada int

SET @contador=0

WHILE (@contador <= 10)

BEGIN

  SET @tabuada=@contador * @numero

  
  SET   @linha =   CAST(@contador as varchar) +
               X + cast(@numero as varchar) + = + cast(@tabuada as varchar)
               
  PRINT @LINHA
               
  SET @contador = @contador+1

END


A procedure foi feita no sql server 2008 e estou usando o storeproc da BDE.

Dessa forma obtenho apenas o último registro:

  sp.ParamByName(@numero).AsInteger:=5;
  sp.ExecProc;
  ShowMessage(sp.ParamByName(@linha).AsString);


O que devo fazer?
Claudio Junior

Claudio Junior

Responder

Posts

25/01/2012

Joel Rodrigues

Opa,
primeiramente você deve alterar seu stored procedure para trazer os resultados em uma tabela (SELECT) e não imprimir na tela (PRINT).

Feito isso, basta fazer:
meuProcedure.Open();

e os dados serão retornados para sua aplicação no Delphi. Para testar, ligue um DataSource ao StoredProc e ponha um DBGrid ligado ao datasource.

Boa sorte.
Responder

Gostei + 0

30/01/2012

Claudio Junior

Valeu, consegui retornar com uma tabela temporário

CREATE PROCEDURE spTabuada2
	@Num INT
AS
	CREATE TABLE #TABUADA(
	  TabNum INT,
	  TabMult INT,
	  TabResult INT
	)
	
	DECLARE @I INT
	
	SET @I = 1
	
	WHILE @I <= 10
	BEGIN
	  INSERT INTO #TABUADA VALUES (@Num, @I, @I * @Num)
	  
	  SET @I = @I + 1
	END
	
	SELECT * FROM #TABUADA
GO
Responder

Gostei + 0

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

Aceitar