有时,我在Windows上的Oracle数据库会受到冲击.如何手动卸载Oracle?
我有一个序列用于在oracle表中播种我的(基于Integer的)主键.
看来这个序列并不总是用于在表中插入新值.如何将序列与表中的实际值一起返回?
家伙.这是PL/SQL中的一个简单的二维数组样本,它运行良好.
declare
type a is table of number;
type b is table of a;
arr b := b(a(1, 2), a(3, 4));
begin
for i in arr.first .. arr.last loop
for j in arr(i).first .. arr(i).last loop
dbms_output.put_line(arr(i) (j));
end loop;
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
我需要做的是为表创建类似的东西RECORDS.像这样:
type a is record(a1 number, a2 number);
type b is table of a;
Run Code Online (Sandbox Code Playgroud)
问题是,我可以手动初始化这种数组,还是应该填充bulk collects或类似?与上面相同的语法似乎不起作用,我无法在手册中找到任何初始化示例.
大家好我有一个'widget'表,其中包含以下列:widget,action,timestamp_.我们想要做的是在特定日期之间拉出每天被拒绝多次的所有小部件.所以这是一个示例表
widget action timestamp_
-------------------------------------------
type1 reject 2011-05-10 08:00:00
type1 reject 2011-05-10 09:00:00
type1 reject 2011-05-10 09:30:00
type2 reject 2011-05-11 09:30:00
type3 reject 2011-05-11 09:30:00
type1 reject 2011-05-11 09:30:00
type1 reject 2011-05-11 09:30:00
type2 reject 2011-05-12 10:30:00
type2 reject 2011-05-12 12:30:00
type3 reject 2011-05-12 12:30:00
Run Code Online (Sandbox Code Playgroud)
所以我期待以这两种方式之一看到结果....
在日期x和y之间,有两个小部件在一天内被多次拒绝
这将看到type1在一天内被拒绝多次,因为type2因此计数为:2
要么
显示每个小部件及其被拒绝的日期多次以及多少次.例..
widget date count
---------------------------------
type1 2011-05-10 3
type1 2011-05-11 2
type2 2011-05-12 2
Run Code Online (Sandbox Code Playgroud)
这可能是首选的输出......但是如何?
提前致谢!
我需要使用基于两个DATETIME列的最大值的公式更新行.我通常会这样做:
GREATEST(date_one, date_two)
Run Code Online (Sandbox Code Playgroud)
但是,两个列都允许为NULL.我需要最大的日期,即使另一个是NULL(当然,当两者都是NULL时我期望NULL)并且GREATEST()当其中一列为NULL时返回NULL.
这似乎有效:
GREATEST(COALESCE(date_one, date_two), COALESCE(date_two, date_one))
Run Code Online (Sandbox Code Playgroud)
但我想知道......我错过了一个更简单的方法吗?
如何创建一个序列,其中START WITH值来自查询?
我正在尝试这种方式:
CREATE SEQUENCE "Seq" INCREMENT BY 1 START WITH (SELECT MAX("ID") FROM "Table");
但是,我收到ORA-01722错误
我在SQL*Plus中运行以下查询
CREATE TABLE tbl_audit_trail (
id NUMBER(11) NOT NULL,
old_value varchar2(255) NOT NULL,
new_value varchar2(255) NOT NULL,
action varchar2(20) CHARACTER SET latin1 NOT NULL,
model varchar2(255) CHARACTER SET latin1 NOT NULL,
field varchar2(64) CHARACTER SET latin1 NOT NULL,
stamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_id NUMBER(11) NOT NULL,
model_id varchar2(65) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (id),
KEY idx_action (action)
);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
action varchar2(20) CHARACTER SET latin1 NOT NULL,
*
ERROR at line 5:
ORA-00907: missing right parenthesis
Run Code Online (Sandbox Code Playgroud)
你能说一下我错过了什么吗?
我有一个表:abc_test,列n_num,k_str.
此查询不起作用:
select distinct(n_num) from abc_test order by(k_str)
Run Code Online (Sandbox Code Playgroud)
但是这个有效:
select n_num from abc_test order by(k_str)
Run Code Online (Sandbox Code Playgroud)
DISTINCT和ORDER BY关键字如何在内部工作,以改变两个查询的输出?
有什么办法可以过滤oracle的all_views表上的文本列吗?
例如:
SELECT *
FROM ALL_VIEWS
WHERE UPPER(TEXT) LIKE '%FOO%';
Run Code Online (Sandbox Code Playgroud)
例外:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
00932. 00000 - "inconsistent datatypes: expected %s got %s"
Run Code Online (Sandbox Code Playgroud)
编辑:
DESC ALL_VIEWS
Name Null Type
---------------- -------- --------------
OWNER NOT NULL VARCHAR2(30)
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG()
TYPE_TEXT_LENGTH NUMBER
TYPE_TEXT VARCHAR2(4000)
OID_TEXT_LENGTH NUMBER
OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30)
VIEW_TYPE VARCHAR2(30)
SUPERVIEW_NAME VARCHAR2(30)
Run Code Online (Sandbox Code Playgroud) 我需要编写一个查询,它接受行并将其转换为列 - 这是我的表:
Count fname lname id
-----------------------------
1 abc def 20
2 pqr 20
3 abc xyz 20
4 xyz xyz 20
1 abc def 21
1 pqr xyz 22
2 abc abc 22
Run Code Online (Sandbox Code Playgroud)
这是我想要产生的输出:
id fname lname fname lname fname lname fname lname
-------------------------------------------------------------
20 abc def pqr NULL abc xyz xyz xyz
21 abc def NULL NULL NULL NULL NULL NULL
22 abc abc NULL NULL NULL NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
每个id的最大计数值是4.我正在使用Oracle 9i.