martes, 7 de noviembre de 2006

SQL - Conocer si un procedimiento, tabla, etc. existe en la base de datos

Para conocer si un objeto (procedimiento almacenado, constraint, llave foranea, etc.) existe en nuestra base de datos, podemos hacer uso de la tabla del sistema de la base de datos sysobjects en la cual se registran todos los objetos que hemos creados.
A continuación se detalla el diseño de la tabla sysobjects. 
   
Nombre de la columnaTipo de DatoDescripción
namesysnameNombre del objeto.
IdintNúmero de identificación del objeto.
xtypechar(2)Tipo de objeto. Puede ser alguno de los siguientes:

C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
L = Log
FN = Scalar function
IF = Inlined table-function
P = Stored procedure
PK = PRIMARY KEY constraint (type is K)
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table
UQ = UNIQUE constraint (type is K)
V = View
X = Extended stored procedure

uidsmallintIdentificador del usuario propietario del objeto.
infosmallintReservado. Para uso interno solamente.
statusintReservado. Para uso interno solamente.
base_schema_
ver
intReservado. Para uso interno solamente.
replinfointReservado. Para uso por replicación.
parent_objintNúmero de identificación del objeto padre.
crdatedatetimeFecha en que el objeto fue crado.
ftcatidsmallintIdentifier of the full-text catalog for all user tables registered for full-text indexing, and 0 for all user tables not registered.
schema_verintNúmero de Version la cual es incrementada cada vez que cambia el esquema para un tabla.
stats_schema_
ver
intReservado. Para uso interno solamente.
typechar(2)Tipo de objeto. Puede ser alguno de los siguientes valores:

C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
FN = Scalar function
IF = Inlined table-function
K = PRIMARY KEY or UNIQUE constraint
L = Log
P = Stored procedure
R = Rule
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table
V = View
X = Extended stored procedure

userstatsmallintReservado.
sysstatsmallintInternal status information.
indexdelsmallintReservado.
refdatedatetimeReservado para uso futuro.
versionintReservado para uso futuro.
deltrigintReservado.
instrigintReservado.
updtrigintReservado.
seltrigintReservado.
categoryintUsado para publicación, identitis (identity) y constraints.
cachesmallintReservado.
 
Ejemplo de uso:

--Verificamos si el procedimiento que vamos a crear existe en la base de datos,
--en caso de que exista se procede a eliminarlo.

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'spProcedimientoABuscar' AND type = 'P' < /FONT > )
   DROP PROCEDURE spProcedimientoABuscar

No hay comentarios.: