小编Luk*_*zda的帖子

如何可靠地获取查询的 SQL_ID

我知道这似乎是一个简单的问题 - 您可能认为存在现有的答案。然而 ...

了解我希望它具有合理的性能,因此它允许记录执行的每个查询(或者至少是大查询),而无需太多开销。

我的第一个想法是这个查询:

select sid,serial#,prev_sql_id from v$session where audsid=userenv('sessionid');
Run Code Online (Sandbox Code Playgroud)

我的想法是,如果我在目标查询之后立即运行此命令,我将sql_id通过 prev_sql_id 捕获正确的结果。

然而...我不是...我得到了不同的SQL...显然在我的目标 SELECT 语句和 的查询之间prev_sql_id,运行了其他东西。在我的例子中,审计已启用,并且我正在将插入捕获到SYS.AUD$表中。不好。

由于我这次尝试的主要目的是捕获查询的执行计划(因为它是由共享池执行和捕获的),所以我认为我可以简单地运行此查询:

SELECT *
  FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
Run Code Online (Sandbox Code Playgroud)

文档指出,使用NULL SQL_IDas 参数,它将在最近运行的查询上运行解释计划。我希望这能解决之前的问题。然而......我得到了将完全相同的插入到SYS.AUD$表中的计划。

您可能会说,好吧,那么只需在查询中添加注释即可轻松捕获SQL_ID,如下所示:

SELECT /* SQL: 1234-12' */ FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

然后我可以尝试按如下方式查找 SQL_ID:

SELECT * FROM V$SQLAREA WHERE sql_text like '%SQL: 1234-12%';
Run Code Online (Sandbox Code Playgroud)

这将为我提供几个可能的候选者,其中V$SQLAREA也包括查询本身。这里的问题是我需要随机化运行的每个查询,这会导致我总是进行硬解析。

我尝试过其他解决方案来回顾历史,但这需要付出更大的代价。我尝试寻找其他解决方案。他们似乎都在某种程度上落后了。

相关文章:

sql oracle sql-execution-plan

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

JOIN sql上的concat 2列值

Table One


ID  Code    Amount
1   2       100
2   2       200


Table Two

ID  Key     Description
1   12      Bag
2   22      Cap
Run Code Online (Sandbox Code Playgroud)

我想加入选择两个表来连接一个表的2列.在表格中说我想在t1.id + t1时加入它们.code = t2.key.在图形我想22 = 22还是12 = 12其中22 or 21的第一面是t1.id+t1.code

查询:

Select * 
from table1 AS t1 INNER JOIN table2 AS t2 ON (t1.id +""+ t1.code)= t2.key
Run Code Online (Sandbox Code Playgroud)

错误:

消息1038,级别15,状态4,行1对象或列名称缺失或为空.对于SELECT INTO语句,请验证每列是否具有名称.对于其他语句,请查找空别名.不允许使用定义为""或[]的别名.将别名更改为有效名称.

sql t-sql sql-server join

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

ORA-02253: 此处不允许约束规范

create table log_table(
log_id varchar2(1000) primary key,
voter_ID varchar2(1000),
date_logged date
CONSTRAINT abc FOREIGN KEY (voter_ID) REFERENCES voters(voter_ID)
)
Run Code Online (Sandbox Code Playgroud)

当我在没有日期元素的情况下创建表格时,该表格有效。但是当我向它添加日期元素时说:

ORA-02253: 此处不允许约束规范

oracle oracle11g

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

有没有办法在ORDER BY之上的某些结果的SQL ORDER BY列ASCENDING?

我有一个100行行查找表,我用它来生成网页上的垂直复选框列表.非常简单的查询来获得结果:

SELECT servicetype FROM XXX
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以对列进行ORDER BY,但是某些已知值是否出现在排序列表的顶部?有点像(我甚至不知道怎么写这个伪代码但是...)

SELECT servicetype FROM XXX
ORDER BY servicetype ASC 
WITH servicetype IN ('Personal', 'Juggling') ON TOP
Run Code Online (Sandbox Code Playgroud)

所以我的列表看起来像:

Juggling         - On top regardless of ORDER BY
Personal         - On top regardless of ORDER BY
Anteating        - Everything else is ORDER BY
Barflying
Beafeating
Carswatting
etc...
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

sql t-sql sql-server

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

XML 路径 ibn SQL 的分组依据

我正在尝试将列中的一些值连接到单个字段中。

到目前为止我有以下代码。

SELECT DISTINCT [customer id]
      ,[customer name]
      ,STUFF( (SELECT ',' + [description] 
                             FROM [Invoicing].[dbo].[CurrentBillMaster] 
                             ORDER BY [description]
                             FOR XML PATH('')),
                            1, 1, '')
      ,[id]
      ,[Section]
      ,[customerpo]
  FROM [Invoicing].[dbo].[CurrentBillMaster]
  GROUP BY [customer id], [customer name], [description],[qty],
           [identifier],[FromDate],[ToDate],[id],[Section],[customerpo]
Run Code Online (Sandbox Code Playgroud)

该代码基本上可以工作,但是我想要串联的描述,只是为了显示该唯一的[客户 ID] 的描述

非常感谢任何帮助

sql t-sql for-xml-path

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

如何找到没有未来日期的最大日期

我正在尝试列出表中每个代码的最新数量(MAX EffectiveDate时间避免Futuristic EffectiveDate)

Code     Quantity EffectiveDate
1        2        1-Mar-2018
1        3        1-Apr-2018
1        3        1-May-2018
1        3        1-June-2018
2        5        1-Mar-2018
2        6        1-Apr-2018
3        7        1-Feb-2018
3        8        1-Mar-2018
3        5        1-Apr-2018
Run Code Online (Sandbox Code Playgroud)

期望的输出应该是:

Code     Quantity EffectiveDate
1        3        1-May-2018
2        6        1-Apr-2018
3        5        1-Apr-2018
Run Code Online (Sandbox Code Playgroud)

我尝试使用MAX BY(DATE)的GROUP BY解决方案, 但它显示了未来数据.

sql t-sql database sql-server

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

Oracle pl/sql ORA-00904无效标识符

我是pl/sql的新手,我无法弄清楚以下脚本中的问题是什么.首先我执行了这个脚本:

CREATE TABLE Cladiri (
 id_cladire varchar2(5) constraint pk_cladire primary key,
 denumire_cladire varchar2(50),
 numar_cladire number(2),
 adresa varchar2(50),
 cod_postal varchar2(15)
);
Run Code Online (Sandbox Code Playgroud)

哪个成功创建了一个表.接下来,我想创建一个带有外键引用的新表id_cladire:

CREATE TABLE Companii (
    id_companie varchar2(5) constraint pk_companie primary key,
    denumire_companie varchar2(50),
    numar_cladire number(4),
    numarul_de_telefon varchar2(20),
    numarul_de_oficii number(4),
    constraint fk_companie_cladire foreign key (id_cladire) references 
Cladiri(id_cladire)
);
Run Code Online (Sandbox Code Playgroud)

执行最后一个脚本时出现以下错误:

ORA-00904:"ID_CLADIRE":标识符无效

问题是什么?

oracle plsql

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

Oracle PL/SQL:两个表之间的count(*)

尝试计算2个表之间的计数差异.

跟着这个回答但是得到了00923. 00000 - "FROM keyword not found where expected"

SELECT ( SELECT count(*) FROM XE_ERR_OVLP WHERE FLAG = 'E') 
- (SELECT count(*) FROM XE_ERR_RANG WHERE FLAG = 'H' ) as cnt;
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

sql oracle oracle10g

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

如何在 SQLite 中计算不同利率的复利

我需要按产品计算复利,其中利率可能因年份而异。

简化表如下。initial_value是产品在第一年年初的价值,final_value是包括相应年末利息的价值。

product year    initial_value   interest    final_value
a         1       10000           0.03        10,300.00
a         2                       0.02        10,506.00
a         3                       0.01        10,611.06
b         1       15000           0.04        15,600.00
b         2                       0.06        16,536.00
b         3                       0.07        17,693.52
Run Code Online (Sandbox Code Playgroud)

重新创建表:

CREATE TABLE temp (year INTEGER, product CHARACTER,
                   initial_value DECIMAL(10,2), interest DECIMAL(10,2));

INSERT INTO temp VALUES (1, 'a', 10000, 0.03);
INSERT INTO temp VALUES (2, 'a', 0, 0.02);
INSERT INTO temp VALUES (3, 'a', 0, 0.01);

INSERT INTO temp VALUES (1, 'b', 15000, …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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

Kusto 查询以按总数的百分比显示摘要

我正在尝试以总数的百分比获取失败的摘要,请参阅下面的查询。这很好,但我希望它向我展示Vendor1=0.5 和 Vendor2=0.5(50% 失败),而不仅仅是Vendor1=1(一个失败为 0),Vendor2=2(两个失败为 0)

datatable (Vendor:string, failure:int)
    ["Vendor1",3,
    "Vendor2",0,
    "Vendor2",0,
    "Vendor2", 7,
    "Vendor1",0,
    "Vendor2", 1]
| where failure == 0    
| summarize Failures=count() by Vendor
Run Code Online (Sandbox Code Playgroud)

kql azure-data-explorer

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