47 messaggi dal 09 luglio 2007
Ciao,
mi stavo chiedendo se fosse possibile (e la sintassi corretta) utilizzare il risultato di una Stored Procedure per fare una Join con un'altra tabella.
Attualmente il codice che ho scritto è questo (ma va in errore nelle righe con exec):
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:    Luca de Angelis
-- Create date: 22/08/2007
-- Description:  Inserimento dei dati contabili nella tabella di log
-- =============================================
CREATE PROCEDURE dbo.InsertIntoLog_dati_contabili 
  -- Add the parameters for the stored procedure here
  @id_gestore tinyint
AS
SET NOCOUNT ON
BEGIN TRANSACTION
  INSERT INTO CEL_log_dati_contabili(numero_telefonico, anno, mese, id_gestore, id_tipo_log)
  SELECT CEL_traffico_temp.numero_telefonico 
    , CEL_traffico_temp.anno
    , CEL_traffico_temp.mese
    , @id_gestore as id_gestore
    , 1
  FROM  CEL_traffico_temp 
    INNER JOIN 
    (EXEC dbo.CEL_SimConGestoreNoFilePeriodo @id_gestore, CEL_traffico_temp.anno + CEL_traffico_temp.mese) AS tabella 
  ON CEL_traffico_temp.numero_telefonico = tabella.numero_telefonico

  INSERT INTO CEL_log_dati_contabili(numero_telefonico, anno, mese, id_gestore, id_tipo_log)
  SELECT CEL_traffico_temp.numero_telefonico 
    , CEL_traffico_temp.anno
    , CEL_traffico_temp.mese
    , @id_gestore as id_gestore
    , 2
  FROM  CEL_traffico_temp 
    INNER JOIN 
    (EXEC CEL_SimNelFileNoGestore @id_gestore) AS tabella 
  ON CEL_traffico_temp.numero_telefonico = tabella.numero_telefonico

  INSERT INTO CEL_log_dati_contabili(numero_telefonico, anno, mese, id_gestore, id_tipo_log)
  SELECT CEL_traffico_temp.numero_telefonico 
    , CEL_traffico_temp.anno
    , CEL_traffico_temp.mese
    , @id_gestore as id_gestore
    , 3
  FROM  CEL_traffico_temp 
    INNER JOIN 
    EXEC CEL_SimNelFileNoUtente @id_gestore AS tabella 
  ON CEL_traffico_temp.numero_telefonico = tabella.numero_telefonico

  IF @@error <> 0
  BEGIN
    ROLLBACK TRANSACTION
  END 
  ELSE
  BEGIN
    COMMIT TRANSACTION  
  END

Ciao,
N@poleone
"Le battaglie si vincono con gli uomini che si hanno, non con quelli che si vorrebbero" (Napoleone Bonaparte)
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
mi stavo chiedendo se fosse possibile


NO! Puoi però trasformare la stored procedure in una User Defined Function

http://italy.mvps.org/MVPs/lbianchi/art_UDF.htm

Bye
47 messaggi dal 09 luglio 2007
Supponendo che non possa trasforamre la SP in UDF... c'è un altro modo per ottenere quello che mi serve?

Avevo pensato a creare una tabella temporanea dal risultato della SP. Almeno questo è possibile?? ;-)

Qualcosa del tipo: EXEC CEL_SimConGestoreNoFile @id_gestore INTO #table
Modificato da napoleone1981 il 22 agosto 2007 12.47 -

Ciao,
N@poleone
"Le battaglie si vincono con gli uomini che si hanno, non con quelli che si vorrebbero" (Napoleone Bonaparte)
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
napoleone1981 ha scritto:
Avevo pensato a creare una tabella temporanea dal risultato della SP. Almeno questo è possibile??


Devo ancora vedere una stored procedure che non possa essere trasformata in udf, comunque puoi inserire i dati in una tabella temporanea (deve già esistere nel momento in cui esegui la sp).

Bye
47 messaggi dal 09 luglio 2007
Scusa se ti rompo, ma proprio non mi riesce...
Ho provato le seguenti combinazioni:
create table #temp (numero_telefonico varchar(15))
INSERT INTO #temp VALUES EXEC CEL_SimNelFileNoGestore @id_gestore

create table #temp (numero_telefonico varchar(15))
#temp = EXEC CEL_SimNelFileNoGestore @id_gestore

create table #temp (numero_telefonico varchar(15))
EXEC CEL_SimNelFileNoGestore @id_gestore INTO #temp

Ma dà sempre errore di sintassi... quale è quella corretta??

Ciao,
N@poleone
"Le battaglie si vincono con gli uomini che si hanno, non con quelli che si vorrebbero" (Napoleone Bonaparte)
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog

Ho provato le seguenti combinazioni:
create table #temp (numero_telefonico varchar(15))
INSERT INTO #temp VALUES EXEC CEL_SimNelFileNoGestore @id_gestore


Va bene questa ma senza la parola chiave VALUES (come se facessi una INSERT ... SELECT)
47 messaggi dal 09 luglio 2007
Infatti avevo risolto così... grazie

Ciao,
N@poleone
"Le battaglie si vincono con gli uomini che si hanno, non con quelli che si vorrebbero" (Napoleone Bonaparte)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.