none
create table utilizzando nome univoco x nome tabella RRS feed

  • Domanda

  • salve ragazzio ho una questione da porvi.

    ho una sp che viene chiamata abbastanza spesso da tutte le applicazioni connesse al db

    in questa sp c'e un create table tablename ....

    corpo della sp

    drop table tablename

    ogni tanto la chiamata alla sp mi ritona un errore dicendo che nel database esiste gia un oggetto chiamato tablename.

    suppongo che sia ovvio che sia stata chiamata quasi contemporaneamente questa sp dalle 2 o piu applicazioni.

    il mio quesito era questo

    è possibile dare un nome alla tabella in modo univoco cosi che se anche avessi + chiamate non restituisse quell'errore?

    Se si come è la sintassi perchè non ci sono riuscito.

    Se necessario posso postare il codice della sp

    Grazie GianPiero

    venerdì 16 luglio 2010 13:22

Risposte

  • ho una sp che viene chiamata abbastanza spesso da tutte le applicazioni connesse al db

    in questa sp c'e un create table tablename ....

    corpo della sp

    drop table tablename

    ogni tanto la chiamata alla sp mi ritona un errore dicendo che nel database esiste gia un oggetto chiamato tablename.

    suppongo che sia ovvio che sia stata chiamata quasi contemporaneamente questa sp dalle 2 o piu applicazioni.

    il mio quesito era questo

    è possibile dare un nome alla tabella in modo univoco cosi che se anche avessi + chiamate non restituisse quell'errore?

    Ciao GianPiero,

    Dato che la sp crea e distrugge la tabella, puoi definire una tabella temporanea locale (con prefisso #) invece di una normale tabella, in questo modo sarà SQL Server ad assegnare un suffisso numerico univoco per garantire l'univocità del nome. Nel tuo codice referenzierai la tabella temporanea locale come #NomeTabella infischiandotene del suffisso univoco. Inoltre puoi evitare di eseguire la DROP TABLE #NomeTabella in quanto al termine della sp verrà automaticamente eliminata dato che esce dallo scope.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta brggpr venerdì 16 luglio 2010 14:22
    venerdì 16 luglio 2010 14:00
    Moderatore

Tutte le risposte

  • ho una sp che viene chiamata abbastanza spesso da tutte le applicazioni connesse al db

    in questa sp c'e un create table tablename ....

    corpo della sp

    drop table tablename

    ogni tanto la chiamata alla sp mi ritona un errore dicendo che nel database esiste gia un oggetto chiamato tablename.

    suppongo che sia ovvio che sia stata chiamata quasi contemporaneamente questa sp dalle 2 o piu applicazioni.

    il mio quesito era questo

    è possibile dare un nome alla tabella in modo univoco cosi che se anche avessi + chiamate non restituisse quell'errore?

    Ciao GianPiero,

    Dato che la sp crea e distrugge la tabella, puoi definire una tabella temporanea locale (con prefisso #) invece di una normale tabella, in questo modo sarà SQL Server ad assegnare un suffisso numerico univoco per garantire l'univocità del nome. Nel tuo codice referenzierai la tabella temporanea locale come #NomeTabella infischiandotene del suffisso univoco. Inoltre puoi evitare di eseguire la DROP TABLE #NomeTabella in quanto al termine della sp verrà automaticamente eliminata dato che esce dallo scope.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta brggpr venerdì 16 luglio 2010 14:22
    venerdì 16 luglio 2010 14:00
    Moderatore
  • Grazie Lorenzo
    venerdì 16 luglio 2010 14:23