AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-515

René Nyffenegger's questions

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

为什么 SQL Server 代理作业会尝试创建过程

  • 0

我正在使用 SQL 代理来安排程序的执行。

第一次执行该过程时,它运行没有问题。作业(步骤)第二次执行时,它没有完成。

以下 SQL 语句的变体告诉我正在运行的语句是create procedure xyz...(xyz作业应该运行的过程的名称在哪里)。

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

我在我的程序(或其他方式)中没有执行任何 DDL,我想知道是什么导致作业尝试创建程序以及为什么作业挂起?

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

Windows 上奇怪的彩色 sqlcl 结果

  • 0

我正在尝试使用 SQLcl 为 SQL 语句的结果着色。

我set sqlformat ansiconsole并执行一个select '@|red red |@' red from dual;

我得到的输出如下所示:

在此处输入图像描述

我把它归咎于 Windows 环境。我应该责怪 Windows 吗?我该怎么办?

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

在 SQL*Plus 中,如何在代理后面运行 @https://here.is.url/script.sql?

  • 0

在 SQL*Plus 中,我尝试运行存储在特定 URL 的脚本。

从我目前所在的位置,我只能通过代理 http(s) 连接到互联网。

所以,如果在 SQL*Plus 中,我尝试

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

SQL*Plus 找不到脚本(因为 SQL*Plus 似乎不知道代理)。

有没有办法指示要使用的代理以及如何使用该代理进行身份验证?

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

为什么使用 dbms_redefinition 后 SQL*Plus 的 desc 表不显示非空约束

  • 5

我有下表要重新定义:

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

请注意not null列上的约束ts1。

使用dbms_redefinition,我专门用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');

除了desc在 SQL*Plus 中没有正确显示not null约束之外,一切似乎都运行良好:

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

但是,在某处,非空约束已经到位。我可以通过发出

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

此外,如果我尝试插入记录 [ insert into tq84_redefinition (id) values (999999)],我会收到(正确的)错误消息ORA-01400: cannot insert NULL into ("META"."TQ84_REDEFINITION"."TS1")。

编辑:版本(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

编辑 2 @Munchi,您建议的 select 语句的结果

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 个回答
  • 3692 Views
Martin Hope
René Nyffenegger
Asked: 2013-08-15 22:10:35 +0800 CST

有没有办法在视图中明确地有一个非空列

  • 2

如果我在 Oracle 中创建视图,则列定义的非空特性是从基表继承的:

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;

将打印

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

现在,如果视图的 select 语句包含 a union all,则该特征似乎不再被继承:

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;

印刷:

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

这对我的目的来说有点不幸。那么,有没有办法明确声明一列not null用于 Oracle 中的视图?

注意:我显然使用了简化的视图定义来演示问题,我可以在不使用union all. 然而,我的实际视图定义要复杂得多,需要union all.

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

归档 fga_log$:sys.dbms_audit_mgmt.clean_audit_trail 不会删除任何内容

  • 2

我在存档然后删除fga_log$表的某些部分时遇到问题。

这是脚本的基本功能

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;
/

dbms_audit_mgmt.clean_audit_trail的文档说:

此过程删除审计跟踪记录。该CLEAN_AUDIT_TRAIL过程通常在SET_LAST_ARCHIVE_TIMESTAMP使用该过程设置审计记录的最后存档时间戳后调用。

因此,我希望通过调用从表中删除使用插入语句归档的记录。然而事实并非如此。我错过了什么吗?fga_log$clean_audit_trail

编辑

选择的审计配置参数

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

编辑二

select * from v$version返回

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 个回答
  • 4520 Views
Martin Hope
René Nyffenegger
Asked: 2013-01-11 04:38:01 +0800 CST

PL/Scope 与关联数组结合使用时是否存在错误?

  • 4

我相信我偶然发现了 PL/Scope 结合关联数组的错误,但也许我忽略了一些东西。

我有以下包裹

create or replace package tq84_pkg_c as

    procedure proc_1;

end tq84_pkg_c;
/

用它的身体

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;
/

我用 PL/Scope 编译包:

ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL';

ALTER PACKAGE TQ84_PKG_C COMPILE;

然后,我查询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;

结果如下:

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

现在,问题出在最后两个记录上:他们usage_context_id是10,并且这个数字应该(我相信)引用usage_id,但是,没有记录usage_id=10。

那么,这是一个错误吗?或者有没有办法将丢失的记录包含到结果集中?

我相信问题是由线路引起的if v_num.exists(1) then。如果我把这个if(和相应的end if)拿出来,问题就会消失,并且 usage_conext_id 用于PROC_2引用现有的usage_id.

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

何时将行添加到 DBA_HIST_SQLSTAT?

  • 2

我不明白需要在dba_hist_sqlstat视图中添加额外记录的标准。我预计每个sql_idand最多有一个条目snap_id,即以下语句不返回任何记录:

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

但是,它返回许多记录,表明不可能,而是正常情况下,每次捕获多次相同的sql语句snap_id。

另外,每个 sql 和 snap 周期有多个记录,我如何解释这个视图中的delta列?文档内容如下:

增量值是 DBA_HIST_SNAPSHOT 视图中从 BEGIN_INTERVAL_TIME 到 END_INTERVAL_TIME 的统计值。

这对我来说真的没有意义。

根据贾斯汀的评论更新:这不在 RAC 环境中:所以即使 I group by snap_id, sql_id, dbid, instance_number,查询也会返回每个 snap_id 和 sql_id 的多条记录。

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

SQL*Plus、@ 和相对路径

  • 10

不知何故,似乎 SQL*Plus(至少在 Windows 上)在使用相对路径调用@@以及路径以单点或双点开头时无法找到具有相对路径的脚本。

例如,在x:\some\where我有以下目录结构:

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

即:两个script.sql但在不同的位置。

script.sql刚刚下的内容x:\some\where简直了

prompt SCRIPT root

而对方script.sql的内容是

prompt SCRIPT main-dir/main-subdir

call-script.sql读

@@script.sql
@ script.sql

预期产出

如果我从启动 SQL*Plusx:\some\where然后执行

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

输出将是

SCRIPT main-dir/main-subdir
SCRIPT root 

这是意料之中的,因为单曲@应该搜索 SQL*Plus 启动@@的路径,并且应该搜索包含脚本目录的路径。

意外输出

现在,如果我call-scripts.sql这样改变:

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

double@@似乎改变了它的行为,因为它搜索 SQL*Plus 启动的路径,现在输出将是

SCRIPT root
SCRIPT root

这不是我所期望的。


这种行为是否记录在某处,更重要的是,我必须如何更改call-scripts.sql才能正确调用相对路径(@@../../other-dir/other-sub-dir/script)?

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

如果我在 SQL*Plus 中设置 ARRAYSIZE 1,记录仍然是成对获取的。为什么?

  • 7

我考虑编写一个简单 tail -f的类似实用程序来“跟踪”数据库中某些数字的进度:

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;

然后我想select * from table(tail_f)在 SQL*Plus 中。

为了一一获取行,我SET ARRAYSIZE 1. 然而,记录(除了第一个)是成对获取的。

对此有解释吗?如何在管道传输后立即获取记录?

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

如果 <table> 具有虚拟列,Oracle 是否可以(以及如何)“插入 <table> 值 <rowtype-variable>”

  • 4

这是一张桌子

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

规则是col_5's value 是其他四列的总和。

所以表格被相应地填充:

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;

现在,比如说,需要复制一行并只更改一列的值。这当然可以使用rowtype-variable非常优雅地完成(恕我直言) ,就像这样

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;
/

这很优雅,因为它不会用insert into ... (col_1, col_2...) values (.., ..)语句使源代码混乱,如果可能的话,我想保留这个特性。

另一方面,col_5是虚拟列的完美候选者。所以,这几乎是一样的,但它col_5是一个虚拟列:

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;

现在,不幸的是,以下构造不再起作用:

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;
/

那么,这是否仍然有可能(如果是,如何)将此行类型变量与虚拟列一起使用?

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

如何使用相关表的聚合值(最小值、最大值)快速更新表?

  • 4

我有一张桌子

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

和值目前min*是。max*null

我还有一张桌子

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

这些表之间存在n:n关系:

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

现在,我想通过连接使用各自的值来填充min*和max*属性。以下会做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);

但我担心这个 sql 查询的性能不是最优的,因为它必须扫描n4 次n.id;

理想情况下,我正在寻找类似的东西

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;

(或类似的东西),但似乎用 mysql 是不可能的。

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

术语“投影”在 SQL 查询(或视图定义)中指的是什么

  • 15

在 Oracle 的文档The Query Optimizer中,在View Merging下,我找到了以下信息

视图合并优化适用于仅包含选择、投影和连接的视图。也就是说,可合并视图不包含集合运算符、聚合函数、DISTINCT、GROUP BY、CONNECT BY 等。 (强调我的)

然而,我只能猜测这种投影实际上指的是什么。

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

已经连接时是否有与 isql 等效的 -w ?

  • 5

-wsybase isql 中的默认输出(文本)宽度为 80。在命令行上启动 isql 时,可以使用标志更改它:

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

现在,我想知道当我已经连接时是否有可能更改文本宽度。我本来期望像

1> set columnwidth 200
2> go

或类似的东西。然而,在文档中我无法找到这个方向的东西。那么,这是否意味着这是不可能的,还是我找错地方了?

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

如何从 isql 将参数传递给“SQL 脚本”

  • 2

我想知道是否可以从 sybase 的 isql 实用程序中将参数传递给 SQL 脚本。

例如,我想在文件the_script.sql中存储一个 select 语句,看起来像

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

然后,使用该文件,我想从 isql 中“执行”它

:r the_script.sql 900 20

$param1用900 和$param220代替期望值。

有没有可能实现我想要的?

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

如何识别具有指向 Sybase 中特定表的外键的表?

  • 7

我正在寻找(最好)一个 SQL 语句,它为任何具有 Sybase 中给定表的外键的表选择表/列名。我认为表格应该以某种方式成为可能,sys...但是对于 sybase 来说是全新的,我无法完全理解它。因此,我们非常感谢对正确方向的任何帮助。

编辑:为了完整起见:SELECT @@VERSION返回

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

编辑 2
非常感谢您的建议,尤其是Andrew Bickerton 的评论。这使我能够构建一个基本的 SQL 选择语句,作为进一步发展的起点。

如果其他人对此感兴趣,这里是:

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 个回答
  • 18157 Views
Martin Hope
René Nyffenegger
Asked: 2011-02-02 17:06:47 +0800 CST

顶级数据库供应商的 SQL (DML-) 方言之间有何不同?

  • 7

是否曾使用过至少两种顶级数据库产品(例如 Oracle、SQL Server、Informix、Sybase、DB2、Teradata)在 SQL 方面进行过扩展工作的人是否知道数据库供应商的 SQL 方言彼此之间有多么不同。由于我来自 Oracle 背景,因此我特别感兴趣

  • 分析函数
  • 示范条款
  • 分层查询(start with .. connect by想到)
  • 任何其他超出常规的功能 ( select x, y from a, b where...)

问题可能归结为这些特征是否以及在何种程度上受 ansi 标准的监管。

实际上,我想知道是否有“经验法则”表明我是否(以及如何)可以采用在一个数据库上运行的 SQL DML 语句并让它在另一个数据库上运行。

sql-standard feature-comparison
  • 5 个回答
  • 4993 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve