CURSORE PER DROP MULTIPLA

lunedì 02 aprile 2012 - 16.29
Tag Elenco Tags  SQL Server 2008 R2  |  SQL Server 2008  |  SQL Server 2005  |  SQL Server 2000

gsflash80 Profilo | Junior Member

ciao a tutti, sto facendo la traduzione da oracle a sql server PACKAGE, visto che in sql server non esiste package
quindi ho creato in un unico file SQL con i blocchi separati, mettendo il nome PACK_procedure1,2,3ecc
PERO' ho messo il check dell'esistenza di queste procedure del package ma non riesco a far togliere in una volta, ho fatto in questo modo:

DECLARE @gruppo varchar(max)
SET @gruppo =(SELECT * FROM sys.objects a WHERE type = 'P' and name Like 'NC_%' )
if @gruppo is not null
DROP PROC dbo.(@gruppo)
go

oppure dovrei fare il cursore? non mi ricordo come funziona grazie


----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>ciao a tutti, sto facendo la traduzione da oracle a sql server
>PACKAGE, visto che in sql server non esiste package
>quindi ho creato in un unico file SQL con i blocchi separati,
>mettendo il nome PACK_procedure1,2,3ecc
>PERO' ho messo il check dell'esistenza di queste procedure del
>package ma non riesco a far togliere in una volta, ho fatto in
>questo modo:
>
>DECLARE @gruppo varchar(max)
>SET @gruppo =(SELECT * FROM sys.objects a WHERE type = 'P' and
>name Like 'NC_%' )
>if @gruppo is not null
>DROP PROC dbo.(@gruppo)
>go
>
>oppure dovrei fare il cursore? non mi ricordo come funziona grazie

Ciao,

Io farei un check di esistenza prima della CREATE PROCEDURE:

IF OBJECT_ID('<schema>.<procedure>') IS NULL CREATE PROCEDURE... ;

Ciao!
--
Lorenzo Benaglia
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

io vorrei che facesse drop tutte le procedure che iniziano NC_
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>io vorrei che facesse drop tutte le procedure che iniziano NC_
Io odio i cursori, pertanto se a priori conosci il loro nome scrivi i relativi comandi di DROP.

Ciao!
--
Lorenzo Benaglia
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

neanche a me piacciono i cursori, quale sarebe l'alternativa per mettere drop proc NC_proc1, NC_proc2, ecc perchè sono circa 15 proc che fanno parte del "package" tradotto da oracle a sql.
Per questo ho cercato di fare il procedure "drop_package", come farebbe a fare la lista dei procedure da droppare? :-(
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>neanche a me piacciono i cursori, quale sarebe l'alternativa
>per mettere drop proc NC_proc1, NC_proc2, ecc perchè sono circa
>15 proc che fanno parte del "package" tradotto da oracle a sql.
15 banalissime DROP PROCEDURE.

>Per questo ho cercato di fare il procedure "drop_package", come
>farebbe a fare la lista dei procedure da droppare? :-(
Puoi costruirti i comandi di DROP facendo una SELECT sulla sys.procedures ma per 15 DROP non mi sembra il caso...

Ciao!
--
Lorenzo Benaglia
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

in questo caso ci sono 15 procedure, ma faccio per il futuro che se dovrei eliminare package che potrebbero esserci 50 o di più.
per questo sto cercando di mettere il procedure

execute drop_packate 'dbo', 'NC_'

sarebbe comodo no?
----

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard

lbenaglia Profilo | Guru

>execute drop_packate 'dbo', 'NC_'
>
>sarebbe comodo no?
Questa soluzione richiederebbe l'utilizzo del Dynamic SQL, altra cosa che non mi piace

Ciao!
--
Lorenzo Benaglia
http://blogs.dotnethell.it/lorenzo/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5