小编Flo*_*ita的帖子

显示进入Oracle数据库的所有查询

我需要查看所有查询到数据库.怎么做?我无法从Google搜索中获得正确的结果.

oracle monitoring

19
推荐指数
3
解决办法
3万
查看次数

PL/SQL使用多个左连接

SELECT * FROM Table A LEFT JOIN TABLE B LEFT JOIN TABLE C
Run Code Online (Sandbox Code Playgroud)

从上面的代码片段,表C将连接到(表B)或(表A LEFT JOIN表B中的数据)或(表A)?

sql oracle

14
推荐指数
1
解决办法
5万
查看次数

仅触发更改的值

假设我们在表中有3条记录:orig_tab

---------------------------------------------
|  PK  |  Name  |  Address  |  Postal Code  |
---------------------------------------------
|   1  |  AA    |  Street1  |   11111       |
|   2  |  BB    |  Street2  |   22222       |
|   3  |  CC    |  Street3  |   33333       |
---------------------------------------------
Run Code Online (Sandbox Code Playgroud)

现在数据发生了变化:

---------------------------------------------
|  PK  |  Name  |  Address  |  Postal Code  |
---------------------------------------------
|   1  |  AA    |  Street1  |   11111       |
|   2  |  BB    |  Street2  |   44444       |
|   3  |  CC    |  Dtreet7  |   33333 …
Run Code Online (Sandbox Code Playgroud)

oracle triggers plsql oracle11g

11
推荐指数
2
解决办法
3万
查看次数

11
推荐指数
1
解决办法
2万
查看次数

如何重新排序表中的项目

我有一个表(称之为my_table),可以像这样简化:NAME,SEQ_NO,LOCKED.

项目被删除并添加,我想重新排序它们(修改SEQ_NO),顺序总是从1到COUNT(*),并且被锁定的项保留它们的SEQ_NO,没有未锁定的项目将获得该数字.仅使用新的SEQ_NO更新未锁定的项目.

例:

这个

NAME  SEQ_NO    LOCKED
Foo   1         N
Bar   3         Y
Abc   4         Y
Baz   5         N
Cde   7         N

会导致:

NAME  SEQ_NO    LOCKED
Foo   1         N
Baz   2         N
Bar   3         Y
Abc   4         Y
Cde   5         N

我怎么能这样做?

sql oracle

10
推荐指数
1
解决办法
5414
查看次数

bash:调试选项和功能

如果我跑

bash -x myscript.sh
Run Code Online (Sandbox Code Playgroud)

我会得到调试输出.

但是如果我有一个函数myscript.sh,函数中的代码不受-x选项的影响.它只写输出函数的名称.

如何在bash脚本中获取函数的调试输出?

更新:

在ztank1013的回复之后,我才意识到我使用的是ksh,而不是bash.似乎bash默认情况下在我的系统中启用了functrace选项(感谢bash-o-logist)

我很满意,但对于社区我维持ksh的问题.

对于脚本:

#!/bin/ksh

a=2
testering(){
        a=3
        if [ $a -eq 3 ]; then
                echo lili
        fi
}
if [ $a -eq 2 ]; then
        echo mimi
fi

testering
exit
Run Code Online (Sandbox Code Playgroud)

输出ksh -x ./testdebug.sh是:

+ a=2
+ [ 2 -eq 2 ]
+ echo mimi
mimi
+ testering
lili
+ exit
Run Code Online (Sandbox Code Playgroud)

那么,对于ksh来说,有什么诀窍呢?

(如果没有答案,'正确'将转到bash-o-logist.)

unix debugging bash ksh function

9
推荐指数
1
解决办法
7768
查看次数

Oracle中全外连接的奇怪行为 - 如何解释?

我注意到Oracle 11中出现了一个奇怪的FULL OUTER JOIN行为.我正在从HR模式加入表,特别是EMPLOYEES和DEPARTMENTS.

例如,以下查询返回123行:

    SELECT * FROM employees e
    FULL JOIN departments d ON e.department_id = d.department_id
Run Code Online (Sandbox Code Playgroud)

但是,要理解的是什么 - 当我在select子句中放入一组特定的列时,查询将返回122行(缺少的行是针对没有分配部门的员工 - 另一个是使用左连接返回的行)与内连接相比):

    SELECT first_name, last_name, department_name FROM employees e
    FULL JOIN departments d on e.department_id = d.department_id
Run Code Online (Sandbox Code Playgroud)

即使我计算行数它返回122(COUNT(*))!到底是怎么回事?SELECT *和之间有什么区别SELECT COUNT(*)

解释计划SELECT * ...:

SELECT STATEMENT                                      122
  VIEW                 VW_FOJ_0                       122
    HASH JOIN                          FULL OUTER     122
      Access Predicates
        E.DEPARTMENT_ID = D.DEPARTMENT_ID
      TABLE ACCESS     DEPARTMENTS     FULL            27
      TABLE ACCESS     EMPLOYEES       FULL           107
Run Code Online (Sandbox Code Playgroud)

并为SELECT …

sql oracle oracle11g

9
推荐指数
1
解决办法
5207
查看次数

pl/sql函数调用了多少次?

假设您有以下更新:

Update table set col1 = func(col2)
where col1<>func(col2)
Run Code Online (Sandbox Code Playgroud)

FUNC函数为每个行计算两次,每行,或一次?

谢谢,

sql oracle plsql oracle9i

8
推荐指数
2
解决办法
3038
查看次数

如何创建oracle sql脚本假脱机文件

我有一个关于假脱机程序结果的问题.我的示例sql脚本看起来像这样.

  whenever sqlerror exit failure rollback
  set heading off
  set arraysize 1
  set newpage 0
  set pages 0
  set feedback off
  set echo off
  set verify off

 declare
 ab varchar2(10) := 'Raj';
 cd varchar2(10);
 a number := 10;
 c number;
 d number;
 begin
 c := a+10;
 select ab,c into cd,d from dual;
 end;

 SPOOL 
 select cd,d from dual;
 SPOOL OFF
 EXIT;
Run Code Online (Sandbox Code Playgroud)

上面的脚本不起作用,但我想做这样的事情,在开始结束块我们计算一些值,我想假设这些结果.

谢谢.

oracle plsql spool sql-scripts

8
推荐指数
1
解决办法
16万
查看次数

批量插入分区表和表级锁定

我想知道核心原因(引擎所做的段,块,锁的机制)为什么批量插入(使用直接路径)锁定整个表,所以如果我插入分区,我不能截断另一个分区插入不会影响(显然)

传统的插入(没有附加提示)允许截断一些不受影响的分区.(注意我说的是非提交的事务.)

下面举例说明它.

让我们成为一张桌子:

 CREATE TABLE FG_TEST 
   (COL NUMBER ) 
  PARTITION BY RANGE (COL) 
 (PARTITION "P1"  VALUES LESS THAN (1000), 
  PARTITION "P2"  VALUES LESS THAN (2000));

Insert into table fg_test values (1);
insert into table fg_test values (1000);
commit;
Run Code Online (Sandbox Code Playgroud)

第一节:

insert into table fg_test select * from fg_test where col >=1000;
--1 rows inserted;
Run Code Online (Sandbox Code Playgroud)

第二节:

alter table fg_test truncate partition p1;
--table truncated
Run Code Online (Sandbox Code Playgroud)

第一节:

rollback;
insert /*+append */ into table fg_test select * from fg_test where col >=1000;
--1 rows …
Run Code Online (Sandbox Code Playgroud)

sql oracle locking bulkinsert

7
推荐指数
1
解决办法
1万
查看次数