- Este tópico contém 46 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 7 meses atrás por joffre.
-
AutorPosts
-
1 de junho de 2011 às 6:01 pm #99460joffreParticipante
[quote=”felipeg”:290wrgot]Se for do mesmo owner é só colocar as tabelas dentro do in ou usar um subselect com todas as tabelas
SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
FROM all_tables WHERE table_name IN ('NOME_DA_TABELA1' , 'NOME_DA_TABELA2', 'NOME_DA_TABELA3')
AND owner = 'OWNER DA TABELA';
/
exitAtenciosamente,
Felipe.[/quote][b]Sim, é tudo do mesmo owner.
Usei o seguinte código:[/b]
SELECT DECODE(COUNT(*), 0, 'FALSE', 1, 'TRUE')
FROM all_tables WHERE table_name IN ('LGID' , 'LGCONFIGURACAO')
;E obtive a seguinte resposta:
DECODE(COUNT(*),0,’FALSE’,1,’T
——————————
NULL1 Row(s) affected
Assim funcionou do jeito que eu preciso:
SELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME='LGID'
;
SELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME='LGCONFIGURACAO'
;[b]Retornou 2 TRUEs, que é o que eu preciso. Mas o problema ainda é fazer o SQLPLUS ler um arquivo .sql e gerar o LOG da mesma forma.
Coloquei o código acima dentro de um arquivo.sql e tentei executá-lo, mas o LOG continua saindo com uns números estranhos como postado anteriormente ao invés de sair o resultado da consulta.[/b]
Alguma idéia de como fazer para sair certo?
1 de junho de 2011 às 6:26 pm #99461felipegParticipante[quote=”joffre”:1gnz4pxp][quote=”felipeg”:1gnz4pxp]Se for do mesmo owner é só colocar as tabelas dentro do in ou usar um subselect com todas as tabelas
SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
FROM all_tables WHERE table_name IN ('NOME_DA_TABELA1' , 'NOME_DA_TABELA2', 'NOME_DA_TABELA3')
AND owner = 'OWNER DA TABELA';
/
exitAtenciosamente,
Felipe.[/quote][b]Sim, é tudo do mesmo owner.
Usei o seguinte código:[/b]
SELECT DECODE(COUNT(*), 0, 'FALSE', 1, 'TRUE')
FROM all_tables WHERE table_name IN ('LGID' , 'LGCONFIGURACAO')
;E obtive a seguinte resposta:
DECODE(COUNT(*),0,’FALSE’,1,’T
——————————
NULL1 Row(s) affected
Assim funcionou do jeito que eu preciso:
SELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME='LGID'
;
SELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME='LGCONFIGURACAO'
;[b]Retornou 2 TRUEs, que é o que eu preciso. Mas o problema ainda é fazer o SQLPLUS ler um arquivo .sql e gerar o LOG da mesma forma.
Coloquei o código acima dentro de um arquivo.sql e tentei executá-lo, mas o LOG continua saindo com uns números estranhos como postado anteriormente ao invés de sair o resultado da consulta.[/b]
Alguma idéia de como fazer para sair certo?[/quote]
Olá,
Primeiramente peço desculpas pelo select com IN, não irá funcionar mesmo.
Segundo, sobre a geração do log, fiz a mesma coisa aqui e o output do arquivo foi esse.
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jun 1 11:28:31 2011Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected.
DECOD
TRUE
DECOD
FALSE
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining optionsO que tem dentro desse seu sql? o meu está assim
conn usuario/senha@instanciaSELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME=
'AIDF'
/
SELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME=
'TESTE'
/
exit
Atenciosamente,
Felipe.1 de junho de 2011 às 7:52 pm #99462joffreParticipante[quote=”felipeg”:3mdyi56g]Olá,
Primeiramente peço desculpas pelo select com IN, não irá funcionar mesmo.
Segundo, sobre a geração do log, fiz a mesma coisa aqui e o output do arquivo foi esse.
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jun 1 11:28:31 2011Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected.
DECOD
TRUE
DECOD
FALSE
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining optionsO que tem dentro desse seu sql? o meu está assim
conn usuario/senha@instanciaSELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME=
'AIDF'
/
SELECT DECODE(COUNT(), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME=
'TESTE'
/
exit
Atenciosamente,
Felipe.[/quote]Felipe, finalmente funcionou. Encontrei o que eu estava fazendo errado.
Ao invés de usar “/” para finalizar uma linha de comando, eu estava usando “;” daí o log era gerado incorretamente.
MUITO OBRIGADO pela ajuda!
E para SQL Server? Sabe como devo fazer esse SELECT?
1 de junho de 2011 às 8:23 pm #99463felipegParticipante[quote=”joffre”:2f63zwqq]
Felipe, finalmente funcionou. Encontrei o que eu estava fazendo errado.Ao invés de usar “/” para finalizar uma linha de comando, eu estava usando “;” daí o log era gerado incorretamente.
MUITO OBRIGADO pela ajuda!
E para SQL Server? Sabe como devo fazer esse SELECT?[/quote]
Olha, ai da pra fazer com case
select case COUNT(*)
when 0 then 'FALSE'
else 'TRUE'
end
from sys.objects where type = 'U'
and name = 'DIR_LIST'GO
select case COUNT(*)
when 0 then 'FALSE'
else 'TRUE'
end
from sys.objects where type = 'U'
and name = 'TESTE'Atenciosamente,
Felipe.1 de junho de 2011 às 8:30 pm #99464joffreParticipanteEstá dando erro nisso aqui: sys.objects
1 de junho de 2011 às 8:39 pm #99465felipegParticipante[quote=”joffre”:3raummog]Está dando erro nisso aqui: sys.objects[/quote]
É cara, ai tem que ver certinho as permissões que o usuário tem que ter.
O usuário da aplicação é sysadmin então foi de boa.Veja se esse roda sem permissão
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
Atenciosamente,
Felipe.1 de junho de 2011 às 8:47 pm #99466joffreParticipante[quote=”felipeg”:djewytw8][quote=”joffre”:djewytw8]Está dando erro nisso aqui: sys.objects[/quote]
É cara, ai tem que ver certinho as permissões que o usuário tem que ter.
O usuário da aplicação é sysadmin então foi de boa.Veja se esse roda sem permissão
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
Atenciosamente,
Felipe.[/quote]Esse SELECT me retornou o seguinte log:
SQL*Plus: Release 10.2.0.3.0 – Production on Qua Jun 1 13:44:55 2011
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> Conectado.
SQL> SP2-0024: Nada para alterar.
SQL> Desconectado de Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – Production
With the Partitioning, OLAP and Data Mining options1 de junho de 2011 às 9:00 pm #99467felipegParticipante[quote=”joffre”:1qouvtvz][quote=”felipeg”:1qouvtvz][quote=”joffre”:1qouvtvz]Está dando erro nisso aqui: sys.objects[/quote]
É cara, ai tem que ver certinho as permissões que o usuário tem que ter.
O usuário da aplicação é sysadmin então foi de boa.Veja se esse roda sem permissão
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
Atenciosamente,
Felipe.[/quote][/quote]Esses dois últimos posts não foram pro Oracle, afinal você disse que está OK.
Foi referente a esta pergunta
[quote=”joffre”:1qouvtvz]
E para SQL Server? Sabe como devo fazer esse SELECT?
[/quote]Atenciosamente,
Felipe.1 de junho de 2011 às 9:06 pm #99468joffreParticipanteErro meu.
O comando
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
Retornou o seguinte log:
TABLE_NAME
——————————————————————————————————————————–
dtproperties
LGConfiguracao
LGID
MSreplication_options
spt_datatype_info
spt_datatype_info_ext
spt_fallback_db
spt_fallback_dev
spt_fallback_usg
spt_monitor
spt_provider_types
spt_server_info
spt_values
sysconstraints
syslogins
sysoledbusers
sysopentapes
sysremotelogins
syssegments
CHECK_CONSTRAINTS
COLUMN_DOMAIN_USAGE
COLUMN_PRIVILEGES
COLUMNS
CONSTRAINT_COLUMN_USAGE
CONSTRAINT_TABLE_USAGE
DOMAIN_CONSTRAINTS
DOMAINS
KEY_COLUMN_USAGE
PARAMETERS
REFERENTIAL_CONSTRAINTS
ROUTINE_COLUMNS
ROUTINES
SCHEMATA
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TABLES
VIEW_COLUMN_USAGE
VIEW_TABLE_USAGE
VIEWS(39 rows affected)
1 de junho de 2011 às 9:11 pm #99469joffreParticipanteAgora tentei executar no SQL esse comando:
select case COUNT(*)
when 0 then 'FALSE'
else 'TRUE'
end
from sys.objects where type = 'U'
and name = 'dbo.LGID'
GOE ele retornou esse log:
Msg 208, Level 16, State 1, Server SRV-TSBDSQL2K, Line 5 Invalid object name ‘sys.objects’.
1 de junho de 2011 às 9:17 pm #99470burgaParticipanteNo SQL Server dê uma olhada nesta tabela
INFORMATION_SCHEMA.Tables
1 de junho de 2011 às 9:19 pm #99471joffreParticipante[quote=”burga”:3jun33yz]No SQL Server dê uma olhada nesta tabela
INFORMATION_SCHEMA.Tables[/quote]
Desculpe a ignorância, mas aonde exatamente devo “dar uma olhada”?
Se era para fazer um SELECT * FROM informatcion_schema.Tables
O resultado foram mais de 1400 linhas.
1 de junho de 2011 às 9:24 pm #99472felipegParticipante[quote=”joffre”:30k6lrig]Erro meu.
O comando
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
Retornou o seguinte log:
TABLE_NAME
——————————————————————————————————————————–
dtproperties
LGConfiguracao
LGID
MSreplication_options
spt_datatype_info
spt_datatype_info_ext
spt_fallback_db
spt_fallback_dev
spt_fallback_usg
spt_monitor
spt_provider_types
spt_server_info
spt_values
sysconstraints
syslogins
sysoledbusers
sysopentapes
sysremotelogins
syssegments
CHECK_CONSTRAINTS
COLUMN_DOMAIN_USAGE
COLUMN_PRIVILEGES
COLUMNS
CONSTRAINT_COLUMN_USAGE
CONSTRAINT_TABLE_USAGE
DOMAIN_CONSTRAINTS
DOMAINS
KEY_COLUMN_USAGE
PARAMETERS
REFERENTIAL_CONSTRAINTS
ROUTINE_COLUMNS
ROUTINES
SCHEMATA
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TABLES
VIEW_COLUMN_USAGE
VIEW_TABLE_USAGE
VIEWS(39 rows affected)
[/quote]
Como que usuário e em qual base você está rodando?
Tente usar com *
select * from INFORMATION_SCHEMA.TABLESO select na sys.objects só irá funcionar se você tiver as permissões corretas, mas, se o primeiro select listar as tabelas, esse nem será necessário.
Atenciosamente,
Felipe.1 de junho de 2011 às 9:26 pm #99473burgaParticipanteSim, mas se vc der uma olhada melhor, você vai reparar que ela é a tabela equivalente à all_tables do Oracle… Coloque a condição WHERE TABLE_NAME = ‘NOME_DA_SUA_TABELA’, da mesma forma que fez no Oracle, mas usando o CASE ao invés do DECODE como o Felipe falou.
Agora que eu vi que o Felipe já tinha passado pra você ver esta tabela…
1 de junho de 2011 às 9:35 pm #99474joffreParticipanteSELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='dbo.LGID'
Usei o código acima como foi dito, mas retorna 0 (False) ao invés de retornar 1 (True).
-
AutorPosts
- Você deve fazer login para responder a este tópico.