Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916

    [sql server] errore stored procedure

    ciao a tutti.
    Mi sono avvicinato da 'troppo' poco alle SP.
    Vi posto quella che stò facendo, che mi va in errore:


    codice:
    USE [corso]
    GO
    /****** Object:  StoredProcedure [dbo].[sp_LogAree]    Script Date: 07/21/2011 12:23:17 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure [dbo].[sp_LogAree]
    
    -- dichiarazione variabili
    @idArea int,
    @descArea nvarchar(50),
    @accesa bit
    
    
    
    as 
    
    SELECT @idArea=id, @descArea=descArea, @accesa=acceso FROM tbTestAree
    
    
    
    INSERT INTO 
    LogAree (dataora,idArea,descArea,accesa)
    VALUES
    (GETDATE(),@idArea,@descArea,@accesa)
    questo è l'errore:

    Messaggio 201, livello 16, stato 4, procedura sp_LogAree, riga 0
    La procedura o funzione 'sp_LogAree' prevede il parametro '@idArea', che non è stato specificato.

    ma dalla select che faccio non dovrei avere la variabile valorizzata?
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Nel modo in cui l'hai definita tu la stored si aspetta di ricevere in ingresso i 3 parametri e quindi di essere "chiamata" con una logica del tipo

    exec sp_logAree 9,'pippo',0

    se invece vuoi definire 3 variabili interne alla procedura in cui salvare i dati che leggi da un'altra parte (per poi inserirli in un'altra tabella) devi mettere qualcosa del tipo (vado a memoria...)

    codice:
    ALTER procedure [dbo].[sp_LogAree]
    
    as 
    
    DECLARE
    -- dichiarazione variabili
    @idArea int,
    @descArea nvarchar(50),
    @accesa bit
    
    SELECT @idArea=id, @descArea=descArea, @accesa=acceso FROM tbTestAree
    
    ..
    ..
    ..

  3. #3
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    ottimo funziona!


    codice:
    ALTER procedure [dbo].[sp_LogAree]
    
    as 
    
    declare
    -- dichiarazione variabili
    @idArea int,
    @descArea nvarchar(50),
    @accesa bit
    
    
    SELECT @idArea=id, @descArea=descArea, @accesa=acceso FROM tbTestAree
    
    
    
    INSERT INTO 
    LogAree (dataora,idArea,descArea,accesa)
    VALUES
    (GETDATE(),@idArea,@descArea,@accesa)
    Adesso però mi inserisce un solo record.
    come faccio a ciclare per tutti i record della select?
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Devi usare un cursore, prova a guardarti la prima pagina di questo esempio (che parla in realtà di come NON usarli ma nella prima pagina c'è un esempio di utilizzo di cursore abbastanza chiaro)

    http://www.sql-server-performance.co...ns-no-cursors/

  5. #5
    per questa cosa (ma in generale...) non starei a scomodare i cursori

    basta una semplice

    INSERT INTO tabella
    (campo1, campo2, campo3)
    VALUES
    SELECT
    campo1, campo2, campo3
    FROM Altra_tabella


  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    E' vero, ad essere precisi non ci va il VALUES... e ci si può aggiungere il getdate() per la colonna aggiuntiva

    INSERT INTO tabella (dataora, campo1, campo2, campo3)
    SELECT getdate() campo1, campo2, campo3 FROM Altra_tabella

  7. #7
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Optime, comas17!!!
    godo come un riccio a veder ste robe!!!

    ultima domanda ... sempre più difficile ...

    visto che, come si è intuito, quello che devo fare, è copiare delle tabelle in alcuni momenti della giornata per avere una sorta di storico, non è che la SP mi permette di fare la INSERT in una colonna di un altro DB?
    visto che la SP è nel DB1, a me pare illogico che possa eseguire operazione nel DB2 ... ma spero di sbagliarmi!!!


    grazie!!!
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  8. #8
    i due db sono su due macchine diverse?

  9. #9
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Originariamente inviato da optime
    i due db sono su due macchine diverse?
    no, stesso server, stessa istanza sql.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  10. #10
    giusto un indizio, poi vai da solo

    SELECT colonna FROM database.schema.tabella


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.