Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [MSSQL] stored procedure su db non master

    Ciao,
    ho creato una stored (sp_nomeutente) procedure che mi fa una select:

    SELECT name FROM utente WHERE code = 1

    e l'ho lanciata (ed effettivamente viene creata)

    Quando poi in una query lancio i due comandi:

    USE database1
    exec sp_nomeutente

    mi da errore

    Il nome di oggetto 'utente' non è valido.

    Sembra che cerchi la utente nel database master invece che nel database1, come posso fare per eseguire la stored procedure creata sul database che scelgo io con USE?

  2. #2
    Se la stai lanciando dal Management Studio o altro tool,hai provato ad inserire un GO tra le due istruzioni??
    codice:
    USE DATABASE nomedb
    GO
    EXEC nomeSP
    Se la stai lanciando via codice da una pagina web/form hai provato ad inserire un ";" tra le due istruzioni affinchè vengano viste come istruzioni separate?
    codice:
    USE DATABASE nomedb; EXEC nomeSP
    Sto andando a memoria..non ho un MSSQL installato qui ora per poterti dare una risposta più precisa

  3. #3
    Si tratta di MSSQL 2005, lancio le istruzioni dal Management Studio:

    USE DATABASE nomedb

    da errore mentre

    USE nomedb

    è corretto (mi accorgo che cambia effettivamente database dalla casella combo dell'elenco dei dataabse in alto a sinistra), ma anche con il GO tra le due istruzioni da lo stesso errore:

    non riconosce l'oggetto utente (che è una tabella di nomedb)

  4. #4
    Originariamente inviato da daniele50
    Si tratta di MSSQL 2005, lancio le istruzioni dal Management Studio:

    USE DATABASE nomedb

    da errore mentre

    USE nomedb

    è corretto (mi accorgo che cambia effettivamente database dalla casella combo dell'elenco dei dataabse in alto a sinistra), ma anche con il GO tra le due istruzioni da lo stesso errore:

    non riconosce l'oggetto utente (che è una tabella di nomedb)
    Prova nella stored a modificare il nome della tabella in dbo..NOMETABELLA

  5. #5
    niente da fare:

    Il nome di oggetto 'dbo.utente' non è valido.

    ho provato anche con dbo..utente (ma credo che il doppio punto ti sia scappato) e da errore comunque.

    A questo punto credo di dover passare il nome del database alla stored come variabile, bisogna poi vedere se mi accetta come sintassi la select:

    codice:
    SELECT name FROM @database.dbo.utente WHERE code = 1

  6. #6
    Sono riuscito a passare il nome dal database all stored come variabile,
    il problema è che nella store la query

    SELECT name FROM @database.dbo.utente WHERE code = 1

    non viene accettata, mentre se metto

    SELECT name FROM nomedb.dbo.utente WHERE code = 1

    funziona.

    come posso sostituire il valore 'nomedb' con quello della variabile?

  7. #7
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Puoi usare qualcosa del tipo

    codice:
    create procedure [dbo].[pippo] 	
    @nomedb VarChar(100)
    AS
    
    Declare @SQL VarChar(1000)
    
    set @SQL = 'SELECT name FROM ' + @nomedb + '.dbo.utente WHERE code = 1'
    
    Exec ( @SQL)

  8. #8
    Per la select va bene, ora però all'interno della stored procedure devo creare un cursore:
    codice:
    DECLARE CursoreAzienda CURSOR FOR
    	SELECT codazi
    	FROM cpazi
    e ho lo stesso problema, dovrei fare
    codice:
    DECLARE CursoreAzienda CURSOR FOR
    	SELECT codazi
    	FROM @database.dbo.cpazi
    e mi da errore, ho provato
    codice:
    SET @SQL = 'SELECT codazi FROM ' + @database + '.dbo.cpazi'
    DECLARE CursoreAzienda CURSOR FOR
    	@SQL
    e anche
    codice:
    SET @SQL = 'SELECT codazi FROM ' + @database + '.dbo.cpazi'
    DECLARE CursoreAzienda CURSOR FOR
    	EXEC @SQL
    ma da sempre errore, come si può fare?

  9. #9
    Risolto secondo la logica dell'esempio di prima:

    codice:
    SET @SQL = 'DECLARE CursoreAzienda CURSOR FOR SELECT codazi FROM ' + @database + '.dbo.cpazi'
    	EXEC (@SQL)
    Grazie!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.