Página 1 de 1

Como saber nome do banco default

Enviado: 08 Ago 2021 20:31
por JoséQuintas
Estou querendo passar algumas funções para stored function, mas esbarrei nisso.

por exemplo, saber se tabela existe:

Código: Selecionar todos

METHOD TableExists( cTable ) CLASS ADOClass

   LOCAL nQtd

   ::cSQL := "SELECT COUNT(*) AS QTD FROM information_schema.TABLES WHERE table_schema=" + StringSQL( Lower( AppEmpresaApelido() ) ) + ;
      " AND table_name=" + StringSQL( cTable )
   ::Execute()
   nQtd := ::Value( "QTD" )
   ::CloseRecordset()

   RETURN nQtd > 0
Do lado do servidor, eu não vou ter o nome do banco de dados usado na conexão.
Tem como obter isso?

Como saber nome do banco default

Enviado: 08 Ago 2021 20:42
por JoséQuintas
Resolvido.

Código: Selecionar todos

CREATE FUNCTION ze_TableExists( cName VARCHAR(50) )
RETURNS int(11)
BEGIN
DECLARE nYes INT(11) ;
SET nYes = ( SELECT COUNT(*) from information_schema.tables 
             where table_schema=DATABASE() AND TABLE_NAME = cName );
RETURN IF( nYes > 0, 1, 0 );
END

Como saber nome do banco default

Enviado: 08 Ago 2021 20:52
por JoséQuintas
Testar se coluna existe

Código: Selecionar todos

CREATE FUNCTION ze_ColumnExists(
	`cField` VARCHAR(50),
	`cTable` VARCHAR(50)
)
RETURNS int(11)
BEGIN
DECLARE nYes INT(11) ;
SET nYes = ( SELECT COUNT(*) from information_schema.columns 
             where table_schema = DATABASE() AND TABLE_NAME = cTable
				 AND COLUMN_NAME = cField );
RETURN IF( nYes > 0, 1, 0 );
END

Como saber nome do banco default

Enviado: 08 Ago 2021 21:02
por JoséQuintas
existe.png