AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-515

René Nyffenegger's questions

Martin Hope
René Nyffenegger
Asked: 2020-01-11 07:17:54 +0800 CST

Por que um trabalho do SQL Server Agent tenta criar um procedimento

  • 0

Estou usando o SQL Agent para agendar a execução de um procedimento.

A primeira vez que o procedimento é executado, ele roda sem problemas. Na segunda vez que o trabalho (etapa) é executado, ele não termina.

Uma variação da seguinte instrução SQL me diz que a instrução em execução é create procedure xyz...(onde xyzé o nome do procedimento que o trabalho deve executar).

select
   prc.loginame,
   prc.program_name,
   sql.text                                           sql_text
from
   sys.sysprocesses     prc                 cross apply
   sys.dm_exec_sql_text(prc.sql_handle) sql

Eu não faço nenhum DDL no meu procedimento (ou de outra forma) e estou querendo saber o que faz com que o trabalho tente criar o procedimento e por que o trabalho trava?

sql-server sql-server-agent
  • 1 respostas
  • 68 Views
Martin Hope
René Nyffenegger
Asked: 2016-09-20 02:03:34 +0800 CST

Resultados sqlcl coloridos estranhos no Windows

  • 0

Estou tentando colorir o resultado das instruções SQL com SQLcl.

eu set sqlformat ansiconsolee executo umselect '@|red red |@' red from dual;

A saída que recebo é assim:

insira a descrição da imagem aqui

Eu culpo o ambiente do Windows. Estou certo em culpar o Windows e o que posso fazer sobre isso?

oracle
  • 1 respostas
  • 283 Views
Martin Hope
René Nyffenegger
Asked: 2014-03-14 00:05:30 +0800 CST

No SQL*Plus, como executo @https://here.is.url/script.sql por trás de um proxy?

  • 0

No SQL*Plus, tento executar um script armazenado em uma determinada URL.

De onde estou atualmente, posso http(s) conectar-me à Internet apenas por meio de um proxy.

Então, se no SQL*Plus, eu tento

@https://here.is.url/script.sql

O SQL*Plus não encontrará o script (já que o SQL*Plus parece não saber sobre o proxy).

Existe uma maneira de indicar qual proxy usar e como autenticar com esse proxy?

sqlplus windows
  • 1 respostas
  • 205 Views
Martin Hope
René Nyffenegger
Asked: 2013-12-16 23:32:56 +0800 CST

Por que a tabela desc do SQL * Plus não mostra restrições não nulas após o uso de dbms_redefinition

  • 5

Tenho a seguinte tabela que quero redefinir:

create table tq84_redefinition (
  id number primary key,
  ts1 timestamp not null,
  ts2 timestamp
);

Observe a not nullrestrição na coluna ts1.

Usando dbms_redefinition, eu uso especificamente copy_constraints => true.

create table tq84_redefinition_int (
    id number,                            -- Note: no primary key to prevent «ORA-01408: such column list already indexed»
    ts1 date,
    ts2 date,
    duration_minutes as ((ts2 - ts1) * 24 * 60)
);


begin
  dbms_redefinition.start_redef_table(
    user, 'tq84_redefinition', 'tq84_redefinition_int',
   'id, '               ||
   'to_date(to_char(ts1, ''ddmmyyyyhh24miss''), ''ddmmyyyyhh24miss'') ts1, ' ||
   'to_date(to_char(ts2, ''ddmmyyyyhh24miss''), ''ddmmyyyyhh24miss'') ts2');
end;
/



-- set serveroutput on

declare  
  cnt_errors binary_integer;
begin

  dbms_redefinition.copy_table_dependents(
    user, 'tq84_redefinition', 'tq84_redefinition_int', 
    -------------------------------------------------------
    copy_indexes     => dbms_redefinition.cons_orig_params,
    copy_triggers    => true, 
    copy_constraints => true, 
    copy_privileges  => true, 
    ignore_errors    => false, 
    num_errors       => cnt_errors,
    copy_statistics  => true, 
    copy_mvlog       => false);

  if cnt_errors > 0 then
     dbms_output.put_line('There were ' || cnt_errors || ' errors.');
  end if;

end;
/

exec dbms_redefinition.sync_interim_table(user, 'tq84_redefinition', 'tq84_redefinition_int');
exec dbms_redefinition.finish_redef_table(user, 'tq84_redefinition', 'tq84_redefinition_int');

Tudo parece funcionar bem, exceto que descno SQL*Plus não exibe corretamente a not nullrestrição:

...> desc tq84_redefinition;
 Name                        Null?    Type
 --------------------------- -------- ---------------
 ID                                   NUMBER
 TS1                                  DATE
 TS2                                  DATE
 DURATION_MINUTES                     NUMBER

No entanto, em algum lugar, as restrições não nulas estão em vigor. Eu posso ver isso emitindo um

select constraint_type, constraint_name, search_condition
  from user_constraints
 where table_name = 'TQ84_REDEFINITION';

Além disso, se eu tentar inserir um registro [ insert into tq84_redefinition (id) values (999999)], recebo a mensagem de erro (correta) ORA-01400: cannot insert NULL into ("META"."TQ84_REDEFINITION"."TS1").

Edit : A versão (v$version) é:

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

Edite 2 @Munchi, o resultado de sua declaração select sugerida

select 
  column_name as "Name",
  nullable as "Null?",
  concat(concat(concat(data_type,'('),data_length),')') as "Type"
from
  user_tab_columns
where
  table_name = 'TQ84_REDEFINITION'

é

Name                           N Type
------------------------------ - --------------
ID                             Y NUMBER(22)
TS1                            Y DATE(7)
TS2                            Y DATE(7)
DURATION_MINUTES               Y NUMBER(22)
oracle sqlplus
  • 2 respostas
  • 3692 Views
Martin Hope
René Nyffenegger
Asked: 2013-08-15 22:10:35 +0800 CST

Existe uma maneira de explicitamente ter uma coluna não nula em uma exibição

  • 2

Se eu criar uma visão no Oracle, a característica não nula da definição da coluna é herdada da tabela base:

create table tq84_t (
  col_1   number,
  col_2   varchar2(15) not null
);

create view tq84_v as select col_1, col_2 from tq84_t;

desc tq84_v;

vai imprimir

Name            Null?    Type
--------------- -------- -----------------------------------------
COL_1                    NUMBER
COL_2           NOT NULL VARCHAR2(15)

Agora, se a instrução select da view contiver um union all, parece que essa característica não é mais herdada:

drop view tq84_v;

create view tq84_v as 
  select col_1, col_2 from tq84_t where col_1 < 10 union all 
  select col_1, col_2 from tq84_t where col_2 > 20;

desc tq84_v;

estampas:

Name            Null?    Type
--------------- -------- -----------------------------------------
COL_1                    NUMBER
COL_2                    VARCHAR2(15)

Isso é um pouco lamentável para os meus propósitos. Então, existe uma maneira de declarar explicitamente que uma coluna é not nullpara uma exibição no Oracle?

Observação: obviamente usei uma definição de exibição simplificada para demonstrar o problema e poderia reescrever a definição de exibição sem usar union all. No entanto, minha definição de exibição real é muito mais complicada, exigindo o union all.

oracle oracle-11g-r2
  • 1 respostas
  • 4453 Views
Martin Hope
René Nyffenegger
Asked: 2013-01-21 23:00:27 +0800 CST

Arquivar fga_log$: sys.dbms_audit_mgmt.clean_audit_trail não exclui nada

  • 2

Estou tendo um problema para arquivar e excluir partes da fga_log$tabela.

Aqui está o que um script basicamente faz

insert into fga_log_archive
select 
  ...
from
  sys.fga_log$;


begin
   sys.dbms_audit_mgmt.set_last_archive_timestamp(
     audit_trail_type     => sys.dbms_audit_mgmt.audit_trail_fga_std,
     last_archive_time    => systimestamp
  );

  sys.dbms_audit_mgmt.clean_audit_trail(
   audit_trail_type        => sys.dbms_audit_mgmt.audit_trail_fga_std,
   use_last_arch_timestamp => true
  );
end;
/

A documentação para dbms_audit_mgmt.clean_audit_trail diz:

Este procedimento exclui os registros da trilha de auditoria. O CLEAN_AUDIT_TRAILprocedimento geralmente é chamado depois que o SET_LAST_ARCHIVE_TIMESTAMPprocedimento foi usado para definir o último registro de data e hora arquivado para os registros de auditoria.

Portanto, esperava que os registros que foram arquivados com a instrução insert fossem excluídos da fga_log$tabela pela clean_audit_trailchamada. Esse não é o caso, no entanto. Estou esquecendo de algo?

Editar

Os parâmetros de configuração de auditoria selecionados com

select 
  substrb(parameter_name ,1,25) name, 
  substrb(parameter_value,1,20) value,
  substrb(audit_trail    ,1,20) trail
from
  dba_audit_mgmt_config_params
;

é

NAME                      VALUE                TRAIL
------------------------- -------------------- --------------------
DB AUDIT TABLESPACE       SYSAUX               STANDARD AUDIT TRAIL
DB AUDIT TABLESPACE       AUDIT_LOG_TABLESPACE FGA AUDIT TRAIL
AUDIT FILE MAX SIZE       10000                OS AUDIT TRAIL
AUDIT FILE MAX SIZE       10000                XML AUDIT TRAIL
AUDIT FILE MAX AGE        5                    OS AUDIT TRAIL
AUDIT FILE MAX AGE        5                    XML AUDIT TRAIL
DB AUDIT CLEAN BATCH SIZE 10000                STANDARD AUDIT TRAIL
DB AUDIT CLEAN BATCH SIZE 10000                FGA AUDIT TRAIL
OS FILE CLEAN BATCH SIZE  1000                 OS AUDIT TRAIL
OS FILE CLEAN BATCH SIZE  1000                 XML AUDIT TRAIL
DEFAULT CLEAN UP INTERVAL 999                  FGA AUDIT TRAIL

Editar II

select * from v$versionretorna

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
oracle audit
  • 1 respostas
  • 4520 Views
Martin Hope
René Nyffenegger
Asked: 2013-01-11 04:38:01 +0800 CST

Existe um bug com PL/Scope em combinação com matrizes associativas?

  • 4

Acredito ter encontrado um bug com PL/Scope em combinação com matrizes associativas, mas talvez eu tenha esquecido algo.

tenho o seguinte pacote

create or replace package tq84_pkg_c as

    procedure proc_1;

end tq84_pkg_c;
/

com seu corpo

create or replace package body tq84_pkg_c as

    type num_t is table of number index by varchar2(10);

    procedure proc_2 is begin
        null;
    end proc_2;

    procedure proc_1 is 
        v_num num_t; 
    begin
        if v_num.exists(1) then
           proc_2;
        end if;
    end proc_1;

end tq84_pkg_c;
/

Eu compilo o pacote "com" PL/Scope:

ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL';

ALTER PACKAGE TQ84_PKG_C COMPILE;

Então, eu questiono all_identifiers:

select
  name          identifier,
  usage,
  type,
  usage_id,
  usage_context_id,
  line,
  col
from
  all_identifiers
where
  object_name in ('TQ84_PKG_C')
order by
  object_name,
  object_type,
  line,
  col;

Com o seguinte resultado:

IDENTIFIER                     USAGE       TYPE                 USAGE_ID USAGE_CONTEXT_ID       LINE        COL
------------------------------ ----------- ------------------ ---------- ---------------- ---------- ----------
TQ84_PKG_C                     DECLARATION PACKAGE                     1                0          1          9
PROC_1                         DECLARATION PROCEDURE                   2                1          3         15
TQ84_PKG_C                     DEFINITION  PACKAGE                     1                0          1         14
NUM_T                          DECLARATION ASSOCIATIVE ARRAY           2                1          3         10
NUMBER                         REFERENCE   NUMBER DATATYPE             3                2          3         28
VARCHAR2                       REFERENCE   CHARACTER DATATYPE          4                3          3         44
PROC_2                         DEFINITION  PROCEDURE                   6                5          5         15
PROC_2                         DECLARATION PROCEDURE                   5                1          5         15
PROC_1                         DEFINITION  PROCEDURE                   7                1          9         15
V_NUM                          DECLARATION VARIABLE                    8                7         10          9
NUM_T                          REFERENCE   ASSOCIATIVE ARRAY           9                8         10         15
V_NUM                          REFERENCE   VARIABLE                   11               10         12         12
PROC_2                         CALL        PROCEDURE                  12               10         13         12

Agora, o problema é com os dois últimos registros: o deles usage_context_idé 10e esse número deve (como eu acredito) fazer referência a usage_id, mas não há nenhum registro com usage_id=10.

Então, isso é um bug? Ou existe uma maneira de incluir o registro ausente no conjunto de resultados?

Acredito que o problema seja causado pela linha if v_num.exists(1) then. Se eu retirar isso if(e o end if) correspondente, o problema desaparece e use_conext_id para PROC_2referenciar um arquivo usage_id.

oracle oracle-11g-r2
  • 2 respostas
  • 588 Views
Martin Hope
René Nyffenegger
Asked: 2012-07-05 20:57:38 +0800 CST

Quando uma linha é adicionada a DBA_HIST_SQLSTAT?

  • 2

Não entendo o critério que acarreta um registro adicional na dba_hist_sqlstatview. Eu esperava que houvesse no máximo uma entrada por sql_ide snap_id, ou seja, a seguinte instrução não retornaria nenhum registro:

select 
  count(*),
  snap_id,
  sql_id
from
  dba_hist_sqlstat
group by
  snap_id,
  sql_id
having
  count(*) > 1
order by
  count(*) desc;

Ainda assim , ele retorna muitos registros, indicando que não é possível, mas a normalidade, que a mesma instrução sql seja capturada várias vezes por snap_id.

Além disso, com mais de um registro por sql e período de snap, como interpreto as colunas delta nessa exibição? A documentação diz:

O valor delta é o valor das estatísticas de BEGIN_INTERVAL_TIME a END_INTERVAL_TIME na exibição DBA_HIST_SNAPSHOT.

Isso realmente não faz sentido para mim.

Atualize de acordo com o comentário de Justin : isso não está em um ambiente RAC: portanto, mesmo que eu group by snap_id, sql_id, dbid, instance_number, a consulta retorne vários registros por snap_id e sql_id.

oracle awr
  • 1 respostas
  • 2688 Views
Martin Hope
René Nyffenegger
Asked: 2012-05-02 22:10:14 +0800 CST

SQL*Plus, @ e caminhos relativos

  • 10

De alguma forma, parece que o SQL*Plus (pelo menos no Windows) não consegue localizar um script com um caminho relativo quando chamado com @@e quando o caminho começa com um ponto simples ou duplo.

Por exemplo, sob x:\some\whereeu tenho a seguinte estrutura de diretórios:

script.sql
main-dir\main-sub-dir
              call-script.sql
              script.sql

Ou seja: dois script.sql, mas em locais diferentes.

O conteúdo de script.sqlapenas abaixo x:\some\whereé simplesmente

prompt SCRIPT root

enquanto o script.sqlconteúdo do outro é

prompt SCRIPT main-dir/main-subdir

call-script.sqllê

@@script.sql
@ script.sql

saída esperada

Se eu iniciar o SQL*Plus x:\some\wheree, em seguida, executar um

@main-dir/main-sub-dir/call-scripts

A saída será

SCRIPT main-dir/main-subdir
SCRIPT root 

Isso é esperado, já que o single @deve pesquisar caminhos de onde o SQL*Plus foi iniciado e @@deve pesquisar caminhos do diretório do script que o contém.

saída inesperada

Agora , se eu mudar call-scripts.sqlassim:

@@./script.sql
@ ./script.sql

o double @@parece mudar seu comportamento, pois procura caminhos de onde o SQL * Plus foi iniciado e a saída agora será

SCRIPT root
SCRIPT root

o que não é o que eu esperava.


Esse comportamento está documentado em algum lugar e, mais importante, como devo alterar call-scripts.sqlpara que ele chame os caminhos relativos ( @@../../other-dir/other-sub-dir/script) corretamente?

oracle sqlplus
  • 1 respostas
  • 20994 Views
Martin Hope
René Nyffenegger
Asked: 2012-04-04 01:31:18 +0800 CST

Se eu DEFINIR ARRAYSIZE 1 no SQL*Plus, os registros ainda serão buscados em pares. Por quê?

  • 7

Pensei em escrever um utilitário like simples tail -f para "rastrear" o andamento de algumas figuras dentro do banco de dados:

create or replace function tail_f return varchar2_tab pipelined as
   n number;
begin

    loop
      exit when ...

      select count(*) into n from ... where ...;

      pipe row(sysdate || ' n= ' || n);
      dbms_lock.sleep(60);
    end loop;

    return;
end tail_f;

E então eu gostaria select * from table(tail_f)no SQL*Plus.

Para buscar as linhas uma a uma, eu SET ARRAYSIZE 1. Ainda, os registros (exceto o primeiro) são buscados em pares.

Existe uma explicação para isso e como posso obter os registros assim que um for canalizado?

oracle sqlplus
  • 2 respostas
  • 1786 Views
Martin Hope
René Nyffenegger
Asked: 2012-03-09 04:12:26 +0800 CST

É (e se como) é possível no Oracle "inserir em <table> valores <rowtype-variable>" se <table> tiver colunas virtuais

  • 4

aqui está uma mesa

create table tq84_virtual_test_without (
  col_1 number,
  col_2 number,
  col_3 number,
  col_4 number,
  col_5 number
);

com a regra de que col_5o valor é a soma das outras quatro colunas.

Assim, a tabela é preenchida de acordo:

insert into tq84_virtual_test_without values( 1, 2, 3, 4, 10);
insert into tq84_virtual_test_without values( 3, 8, 7, 5, 23);

commit;

Agora, digamos que seja necessário copiar uma linha e alterar apenas o valor de uma coluna. É claro que isso pode ser feito de maneira bastante elegante (imho, isto é) com uma variável de tipo de linha , assim

declare
  r tq84_virtual_test_without%rowtype;
begin

  select * into r from tq84_virtual_test_without where col_2 = 8;

  r.col_4 := r.col_4 - 2;
  r.col_5 := r.col_5 - 2;

  insert into tq84_virtual_test_without values r;

end;
/

Isso é elegante porque não sobrecarrega o código-fonte com insert into ... (col_1, col_2...) values (.., ..)instruções e gostaria de manter esse recurso, se possível.

Por outro lado, col_5é um candidato perfeito para uma coluna virtual . Então, aqui está quase a mesma coisa, mas col_5sendo uma coluna virtual:

create table tq84_virtual_test_with (
  col_1 number,
  col_2 number,
  col_3 number,
  col_4 number,
  col_5 as (col_1 + col_2 + col_3 + col_4) virtual
);

insert into tq84_virtual_test_with values( 1, 2, 3, 4, default);
insert into tq84_virtual_test_with values( 3, 8, 7, 5, default);

commit;

Agora, e isso é lamentável, a seguinte construção não funciona mais:

declare
  r tq84_virtual_test_with%rowtype;
begin

  select * into r from tq84_virtual_test_with where col_2 = 8;

  r.col_4 := r.col_4 - 2;

--     
--  ORA-54013: INSERT operation disallowed on virtual columns
--
  insert into tq84_virtual_test_with values r;

end;
/

Então, ainda é possível (e em caso afirmativo, como) usar essa variável de tipo de linha junto com colunas virtuais ?

oracle oracle-11g-r2
  • 4 respostas
  • 11294 Views
Martin Hope
René Nyffenegger
Asked: 2012-02-20 12:04:37 +0800 CST

Como faço para atualizar uma tabela com os valores agregados (min, max) de uma tabela relacionada rapidamente?

  • 4

eu tenho uma mesa

create table w (
  id integer primary key,
  --
  min_xyz double,
  max_xyz double,
  min_abc double,
  max_abc double
);

com os valores min*e max*atualmente sendo null.

eu tenho outra mesa

create table n (
    id   integer primary key,
    ---
    xyz  float,
    abc  float
);

Existe uma n:nrelação entre essas tabelas:

create table n_in_w (
  n_id   integer not null references n,
  w_id   integer not null references w
  --- further attributes
);

Agora, gostaria de preencher os atributos min*e com os respectivos valores na conexão via . O seguinte fariamax*wnn_in_w

update w set 
  min_xyz = (select min(xyz) from n, n_in_w where n.id = n_in_w.n_id and n_in_w.w_id = w.id),
  max_xyz = (select max(xyz) from n, n_in_w where n.id = n_in_w.n_id and n_in_w.w_id = w.id),
  min_abc = (select min(abc) from n, n_in_w where n.id = n_in_w.n_id and n_in_w.w_id = w.id),
  max_abc = (select max(abc) from n, n_in_w where n.id = n_in_w.n_id and n_in_w.w_id = w.id);

mas temo que o desempenho desta consulta sql não seja ideal, pois tem que verificar n4 vezes para cada n.id;

Idealmente, estou procurando algo como

update (
  select
    w.id,
    /*----*/
    w.min_xyz,
    w.max_xyz,
    w.min_abc,
    w.max_abc,
    /*-----*/
    min(n.xyz) min_n_xyz,
    max(n.xyz) max_n_xyz,
    min(n.abc) min_n_abc,
    max(n.abc) max_n_abc
  from 
    w, n_in_w, n
  where
    w.id = n_in_w.w_id and
    n.id = n_in_w.n_id
) i
set
  i.min_xyz = i.min_n_xyz,
  i.max_xyz = i.max_n_xyz,
  i.min_abc = i.min_n_abc,
  i.max_abc = i.max_n_abc;

(ou algo semelhante), mas parece que não é possível com o mysql.

mysql
  • 1 respostas
  • 9545 Views
Martin Hope
René Nyffenegger
Asked: 2012-02-11 02:18:00 +0800 CST

A que se refere o termo "projeção" em uma consulta SQL (ou definição de exibição)

  • 15

No documento da Oracle The Query Optimizer , em View Merging , encontrei as seguintes informações

A otimização de mesclagem de exibição se aplica a exibições que contêm apenas seleções, projeções e junções. Ou seja, as exibições mescláveis ​​não contêm operadores de conjunto, funções agregadas, DISTINCT, GROUP BY, CONNECT BY e assim por diante. (ênfase minha)

No entanto, só posso adivinhar a que tal projeção realmente se refere.

oracle select
  • 2 respostas
  • 35908 Views
Martin Hope
René Nyffenegger
Asked: 2011-06-07 04:33:35 +0800 CST

Existe um -w equivalente para isql quando já conectado?

  • 5

A largura de saída padrão (texto) no sybase isql é 80. Ela pode ser alterada com o -wsinalizador quando o isql é iniciado em uma linha de comando:

isql -w 200 -S... -U... -P...

Agora, gostaria de saber se existe a possibilidade de alterar a largura do texto quando já estiver conectado. Eu teria esperado algo como

1> set columnwidth 200
2> go

ou algo semelhante. No entanto, na documentação não consigo encontrar algo nesse sentido. Então, isso significa que isso é impossível ou estou procurando no lugar errado?

sybase isql
  • 1 respostas
  • 2011 Views
Martin Hope
René Nyffenegger
Asked: 2011-05-26 00:03:44 +0800 CST

Como posso passar parâmetros para um "Script SQL" do isql

  • 2

Eu estou querendo saber se é possível passar parâmetros para um script SQL de dentro do utilitário isql do sybase.

Por exemplo, gostaria de armazenar uma instrução select no arquivo the_script.sqlque se parecesse com

select
   col_1,
   col_2,
   etc
from
   table
where
   cond1 > $param1 and
   cond2 < $param2

Então, com esse arquivo, gostaria de "executá-lo" do isql com

:r the_script.sql 900 20

com a expectativa que $param1é substituída por 900 e $param2por 20.

Existe a possibilidade de conseguir o que eu quero?

sybase isql
  • 3 respostas
  • 19328 Views
Martin Hope
René Nyffenegger
Asked: 2011-05-21 01:54:22 +0800 CST

Como identifico tabelas que possuem uma chave estrangeira para uma tabela específica no Sybase?

  • 7

Estou procurando (de preferência) uma instrução SQL que selecione os nomes de tabela/coluna para qualquer tabela com uma chave estrangeira para uma determinada tabela no Sybase. Acho que deveria ser possível de alguma forma com as sys...tabelas, mas sendo completamente novo no sybase, não consigo entender. Portanto, qualquer ajuda na direção certa é muito apreciada.

Editar: Por uma questão de integridade: SELECT @@VERSIONretorna

'Adaptive Server Enterprise/15.0.3/EBF 17156 ESD#3/P/Sun_svr4/OS 5.8/ase1503/2726/64-bit/FBO/Sex 5 de fevereiro 05:26:23 2010'

Editar 2
Muito obrigado por suas sugestões, especialmente o comentário de Andrew Bickerton . Isso me permitiu construir uma instrução select SQL rudimentar para um ponto de partida para ir mais longe.

Caso alguém se interesse, aqui está:

select 
  fko.name    "Foreign key name",
  par.name    "Referenced table name",
  fk1.name || ' -> ' || pk1.name "Reference 1",
  fk2.name || ' -> ' || pk2.name "Reference 2",
  fk3.name || ' -> ' || pk3.name "Reference 3",
  fk4.name || ' -> ' || pk4.name "Reference 4"
from 
  sysobjects      tab                                       join
  sysconstraints  con on tab.id        = con.tableid        join
  sysobjects      fko on con.constrid  = fko.id             join
  sysreferences   ref on con.constrid  = ref.constrid       join
  sysobjects      par on par.id        = ref.reftabid  left join
  ---- 1. Column
  syscolumns      fk1 on ref.fokey1    = fk1.colid and
                         ref.tableid   = fk1.id        left join
  syscolumns      pk1 on ref.refkey1   = pk1.colid and
                         ref.reftabid  = pk1.id        left join
  ---- 2. Column
  syscolumns      fk2 on ref.fokey2    = fk2.colid and
                         ref.tableid   = fk2.id        left join
  syscolumns      pk2 on ref.refkey2   = pk2.colid and
                         ref.reftabid  = pk2.id        left join
  ---- 3. Column
  syscolumns      fk3 on ref.fokey3    = fk3.colid and
                         ref.tableid   = fk3.id        left join
  syscolumns      pk3 on ref.refkey3   = pk3.colid and
                         ref.reftabid  = pk3.id        left join
  ---- 4. Column
  syscolumns      fk4 on ref.fokey4    = fk4.colid and
                         ref.tableid   = fk4.id        left join
  syscolumns      pk4 on ref.refkey4   = pk4.colid and
                         ref.reftabid  = pk4.id        -- Et cetera...
where
  tab.type = 'U'      and
  tab.name = 'tq84_f' and
  fko.type = 'RI'
sybase referential-integrity
  • 4 respostas
  • 18157 Views
Martin Hope
René Nyffenegger
Asked: 2011-02-02 17:06:47 +0800 CST

Qual a diferença entre os dialetos SQL (DML-) dos principais fornecedores de banco de dados?

  • 7

Alguém que trabalhou extensivamente em SQL com pelo menos dois principais produtos de banco de dados (como Oracle, SQL Server, Informix, Sybase, DB2, Teradata) sabe como os dialetos SQL do fornecedor de banco de dados são diferentes entre si? Como tenho experiência em Oracle, estou especialmente interessado em

  • funções analíticas
  • cláusulas modelo
  • consultas hierárquicas ( start with .. connect byvem à mente)
  • qualquer outra característica que seja mais do que o habitual ( select x, y from a, b where...)

Provavelmente, a questão se resume a se e até que ponto esses recursos são regulados por um padrão ansi.

Na prática, gostaria de saber se existe uma "regra prática" que indicaria se (e como) posso pegar uma instrução SQL DML que é executada em um banco de dados e deixá-la ser executada em outro banco de dados.

sql-standard feature-comparison
  • 5 respostas
  • 4993 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve