我使用oracle 11g并且需要大小超过30个字符的名称,我知道11g中的最大大小是30个字符.
我可以更改此最大尺寸吗?
Oracle 12c中表/列/索引名称的最大大小是多少?
我正在尝试编写INSERT INTO来执行一些DISTINCT/GROUP BY工作.该查询作为select语句运行完全正常,但如果将其包装到INSERT INTO中则无效.
INSERT INTO MasterRecords
(BatchRecordRecordID, SourceID, BatchID)
SELECT RecordID, SourceID, BatchID
FROM (
SELECT RecordID, BatchID, 101 AS SourceID
FROM BatchRecords
WHERE BatchID = 150
GROUP BY RecordID, BatchID
) BR
Run Code Online (Sandbox Code Playgroud)
这让我有所收获:
SQL错误:ORA-00979:不是GROUP BY表达式
但是,如果我只删除INSERT INTO代码,它运行完全正常:
SELECT RecordID, SourceID, BatchID
FROM (
SELECT RecordID, BatchID, 101 AS SourceID
FROM BatchRecords
WHERE BatchID = 150
GROUP BY RecordID, BatchID
) BR
Run Code Online (Sandbox Code Playgroud)
结果:
3 101 150
5 101 150
6 101 150
2 101 150
4 101 150
8 …Run Code Online (Sandbox Code Playgroud) 我看到Oracle 11g或12c没有OS X的下载文件.但是,有一个适用于OS X的SQL Developer版本.当你没有数据库时,SQL Developer有什么意义?
如何在OS X上安装Oracle数据库(最好是12c或11g Express Edition)?
希望有人可以发现我做错了什么,因为我正在秃顶.
我已经使用utl_http和钱包在11gR1上调用https而没有太大的麻烦,但我们新的12c安装让我感到非常悲痛.
我尝试使用oracle钱包管理器和命令行导入可信证书,但没有任何成功.我知道oracle可以挑剔缓存钱包,所以我尝试了多次没有运气的新会话.
我已经为*.presstogo.com,Geotrust SSL CA和Geotrust Global CA下载了三个必要的证书.
我构建钱包的命令行版本如下:
orapki wallet create -wallet /oracle/product/12.0.1/owm/wallets/test1237 -pwd test=1237 -auto_login
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "*.presstogo.com" -pwd test=1237
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "GeoTrust SSL CA" -pwd test=1237
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "Geotrust Global CA" -pwd test=1237
orapki wallet display -wallet /oracle/product/12.0.1/owm/wallets/test1237
Oracle PKI Tool : Version 12.1.0.1
Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
Requested Certificates:
User Certificates:
Trusted Certificates:
Subject: …Run Code Online (Sandbox Code Playgroud) 我有以下字符串:
ThisSentence.ShouldBe.SplitAfterLastPeriod.Sentence
Run Code Online (Sandbox Code Playgroud)
所以我想选择,Sentence因为它是最后一个时期之后的字符串.我怎样才能做到这一点?
我有一个简单的查询:
WITH xtbl AS (
SELECT XMLTYPE ('<a><b>1</b></a>') AS xcol
FROM DUAL
)
SELECT XMLQUERY ('copy $tmp := .
modify
insert node <c>2</c>
into $tmp/a/b
return $tmp'
PASSING xcol
RETURNING CONTENT) AS newxcol
FROM xtbl;
Run Code Online (Sandbox Code Playgroud)
我想要做的是在节点内插入一个节点<c>,但Oracle 12c抛出了这个错误:<b><a>
ORA-19114: XPST0003 - error during parsing the XQuery expression:
LPX-00801: XQuery syntax error at 'EOF'
5 -
- ^
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
NEWXCOL
-------------
<a>
<b>1</b>
<c>2</c/>
</a>
Run Code Online (Sandbox Code Playgroud)
我已经尝试在Oracle Docs中寻找替换appendChildXML并遵循该示例但只得到了错误.
我知道这是非常基本的,我错过了一些明显的东西.请帮忙.
我有这样的代码.
final PreparedStatement stmt = connection
.prepareStatement("delete from " + fullTableName
+ " where name= ?");
stmt.setString(1, addressName);
Run Code Online (Sandbox Code Playgroud)
计算fullTableName是这样的:
public String getFullTableName(final String table) {
if (this.schemaDB != null) {
return this.schemaDB + "." + table;
}
return table;
}
Run Code Online (Sandbox Code Playgroud)
这schemaDB是环境的名称(可以随时间更改),table是表名(将被修复).
值schemaDB来自一个XML文件,使查询易受SQL注入攻击.
查询:我不确定如何将表名用作预准备语句(如name本示例中所使用的),这是针对SQL注入的100%安全措施.
任何人都可以建议我,可能有什么方法可以解决这个问题?
注意:我们将来可以迁移到DB2,因此该解决方案应该与Oracle和DB2兼容(如果可能的话,与数据库无关).
我想用条件SUM进行查询.在重置之后,SUM需要超过15.像这样:
A | 3 | 3
B | 7 | 10
C | 6 | 16 -- ====
D | 5 | 5
E | 9 | 14
F | 3 | 17 -- ====
G | 8 | 8
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我可以使用Oracle 11(请参阅SQL Fiddle)和Oracle 12 重现以下行为.
CREATE TYPE my_tab IS TABLE OF NUMBER(3);
CREATE TABLE test AS SELECT ROWNUM AS id FROM dual CONNECT BY ROWNUM <= 1000;
CREATE UNIQUE INDEX idx_test ON test( id );
CREATE VIEW my_view AS
SELECT id, COUNT(1) OVER ( PARTITION BY id ) AS cnt
FROM test;
Run Code Online (Sandbox Code Playgroud)
以下情况使用索引按预期方式:
SELECT * FROM my_view
WHERE id IN ( 1, 2 );
---------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | …Run Code Online (Sandbox Code Playgroud) 无法DBMS_SCHEDULER通过删除END_DATE
大家好!我正在使用oracle 12cR1,现在DBMS_SCHEDULER作业有问题。
首先,我DBMS_SCHEDULER用END_DATEset 创建了一个重复的oracle 作业,在set之后END_DATE,作业成功完成,并且job的启用状态自动更改为Disabled。根据作业的运行日志,“操作”为COMPLETED,而“附加信息REASON="End time reached"
”为预期值。
然后我想再次运行作业,我删除了该END_DATE字段
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE('JOB_XXX', 'END_DATE', '');
Run Code Online (Sandbox Code Playgroud)
并通过以下方式设置作业启用
SYS.DBMS_SCHEDULER.ENABLE(name => 'JOB_XXX');
Run Code Online (Sandbox Code Playgroud)
我可以看到该作业已再次启用,并且END_DATE为空。但是作业再次运行一次,然后停止,运行日志为COMPLETED,而附加信息REASON="End time reached"再次运行。
BEGIN
sys.dbms_scheduler.CREATE_JOB(
JOB_NAME => 'JOB_3358',
job_type => 'STORED_PROCEDURE',
JOB_ACTION => 'TEST_JOB',
START_DATE => to_date('2019-05-05 13:35:00','yyyy-mm-dd hh24:mi:ss'),
REPEAT_INTERVAL => 'FREQ= SECONDLY;INTERVAL=30',
END_DATE => to_date('2019-05-05 13:38:00','yyyy-mm-dd hh24:mi:ss'),
auto_drop => FALSE,
COMMENTS => NULL);
END;
/
begin
sys.dbms_scheduler.enable(name => 'JOB_3358');
end;
/
Run Code Online (Sandbox Code Playgroud)
我所期望的是,该作业将 …