buenos días:
es posible, y si es así, como se puede interrogar a la DB con sql para averiguar si una tabla existe ?
salu2.
| |||
Re: averiguar con sql si una tabla existe Hola Bueno, pues mira, puedes hacer lo siguiente: estando en sql usas la sentencia desc Tabla; Si la tabla existe te aparece la descripcion de la tabla con nombres de campos, tipo y tamaño de los campos. Si no existe, muestra este error: ERROR 1146 (42502) : Table 'basededatos.tabla' doesn't exist Espero te sirva, suerte. |
| |||
Re: averiguar con sql si una tabla existe buenas tardes: utilizo ASP, de esta forma: sqlcre = "create table campa . . . . . . . . . . )"; CONN = Server.CreateObject("ADODB.Connection") CONN.ConnectionString = "dRIVER=SQL Server;UID= . . . . . . . . . . . " CONN.open no se muy bien como encajar la consulta: sería así : sqlsel ="select * from dbo.sysobjects where id = object_id(N'[dbo].[campa]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)" rs = Server.CreateObject("ADODB.RecordSet"); var adOpenKeySet = 1; var adLockReadOnly = 1; rs.Open(sqlsel,CONN,adOpenKeySet,adLockReadOnly); if (rs.EOF){ CONN.Execute(sqlcre);} salu2. gracias. Última edición por evoarte; 27/02/2007 a las 12:54 |
| ||||
Re: averiguar con sql si una tabla existe lo mejor es que lo realices dentro de un stored procedure....
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| ||||
Re: averiguar con sql si una tabla existe desde donde ejecutas esa operacion?? desc table...
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| |||
Re: averiguar con sql si una tabla existe Hola pues lo haces como si fueras a hacer un select, es lo mismo O bueno, hacerlo con select Código PHP: Suerte |
| ||||
![]() Bueno, te comento que no es recomendable realizar acciones a base de excepciones, es decir, esperando que ocurra un error para tomar una accion en el flujo del proceso. Lo mejor es hacerlo con instrucciones validas. Por otro lado, la instruccion que propones es de MySQL (corrigeme si estoy equivocado), y en SQL Server no existe. En SQL Server una buena forma de hacerlo es con el query que comente anteriormente, incluyendolo en un stored procedure. Posiblemente no te funcione en MySQL ya que se accede a tablas de sistema de la base de datos. ![]()
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| ||||
Re: averiguar con sql si una tabla existe Lo mejor siempre será hacerle un select a la tabla sysobjects y preguntar si existe la tablita. Como que se tiene mayor control, de otra forma estás forzando a que ocurran excepciones y trabajar en base a ellas, y esa no es la naturaleza de las excepciones |
| |||
Re: averiguar con sql si una tabla existe Hola Bueno, pues la excepción precisamente solo se da cuando se debe dar, en caso contrario no se ejecutara, asi que no le veo problema, de otra forma para que las excepciones.. y en efecto, yo hablo de mysql, en sql server esa info esta en sysobject y syscolumns, y se podria entonces crear una vista usando el id como link y listo Suerte |
| |||
Re: averiguar con sql si una tabla existe Utiliza la forma que te dice Developer9, es la correcta forma de realizar las cosas... Trabajar bajo excepciones es feo y totalmente incorrecto, y con lo que te supone ir creando excepciones en el servidor... |
| ||||
Re: averiguar con sql si una tabla existe Usar querys directos a tablas de sistema, como sysobjects no es lo correcto, es más, en SQL Server 2005 ni siquiera está permitido. Tienes 2 maneras correctas de averiguarlo: 1) SELECT * FROM information_schema.tables WHERE table_name = 'mitabla' 2) SELECT Object_Id('mitabla') Aunque el punto 2 busca cualquier objeto que tenga ese nombre, no necesariamente una tabla.
__________________ Friedrich Nietzsche |
| ||||
Re: averiguar con sql si una tabla existe Nop, es un view de sistema. Los information_schema son un estándar de SQL ANSI (aunque no sé de qué año de ANSI).
__________________ Friedrich Nietzsche |
| ||||
Re: averiguar con sql si una tabla existe que paciencia my friend... (tu me entiendes...) sorry offtopic pero luego no me puedo contener.. jaja
__________________ Nadie roba nada ya que en la vida todo se paga . . . Exentrit - Soluciones SharePoint & Net |
| ||||
Re: averiguar con sql si una tabla existe Orale Rootk, como así por esta zona... Ya le heché un ojo al information_schema.tables ![]() Oigan pero si le puedo hacer select's a tablas del sistema ![]() ![]() Ejecuten select * from dtproperties, select * from spt_monitor y si funka |
| ||||
Re: averiguar con sql si una tabla existe De que se puede se puede, pero no es lo correcto. Además, supongo que eso es en v2000, porque por lo que he leído, en v2005 ya no lo puedes hacer, para eso tienes los nuevos views sys.*
__________________ Friedrich Nietzsche |
| ||||
Re: averiguar con sql si una tabla existe Cita: mmm, si te refieres a esta:
Iniciado por Mithrandir PD. El select que pusiste no jala, SELECT CONVERT(DATETIME,'2005-03-17',103) a mi me funcion, bueno, con la aclaración previa de que en 2005 no me respeta el formato aaaa-MM-dd tengo que hacer ésto: SELECT CONVERT(DATETIME,'20050317',103) Cita: pues a mi pesar te las acepto, al fin ya mañana termino mi curso para la prox semana discutirlo con unas bien frías no.?? jejeje
Iniciado por Mithrandir Eso definitivamente habrá que discutirlo con una buenas birras de por medio |
| ||||
Re: averiguar con sql si una tabla existe ¿Es mi imaginación o el incio de la discusión con RootK desapareció? ![]() SELECT CONVERT(DATETIME,'2005-03-17',103) Eso tampoco corre en v2000 (al menos no en el mío), según yo el 103 está sobrando. Bueno saberlo, todas las lecturas que he hecho comentan que ya no se dejarían hacer los querys directamente en las tablas de sistema.
__________________ Friedrich Nietzsche |
| ||||
Re: averiguar con sql si una tabla existe Cita: totalmente de acuerdo, el problema es que no sé en que estaba pensando cuando te puse eso..
Iniciado por Mithrandir Eso tampoco corre en v2000 (al menos no en el mío), según yo el 103 está sobrando. ![]() select convert(datetime,'17-03-2005',103) es decir, mandaba la fecha en formato dd-MM-yyyy y el 103 era el que me regresaba el tipo que necesitaba pero ya para el formato universal se puede hacer de cualquiera de las siguientes formas: Cita: saludos y por aqui nos veremos pronto friend, hay me hechas un phone... select cast('2005-03-17' as datetime) --yyyy-MM-dd select cast('20050317' as datetime) --yyyyMMdd select convert(datetime,'20050317',103) --yyyyMMdd |