我正在查询的数据库是Oracle 12c。数据库版本详细信息如下:
Oracle Database 12c 企业版版本 12.1.0.2.0 - 64 位生产版
PL/SQL 版本 12.1.0.2.0 - 生产
我试图消除 SQL 查询中每个视图或表都使用双引号的需要。
以下作品(来自 Oracle Sql Developer GUI)
select m."Metadata"
from "EvMetadata" m
Run Code Online (Sandbox Code Playgroud)
以下给出错误(来自 Oracle Sql Developer GUI)
select m.Metadata
from EvMetadata m
Run Code Online (Sandbox Code Playgroud)
错误是
ORA-00942: 表或视图不存在 00942. 00000 - “表或视图不存在” *原因:
*操作: 行: 2 列: 6 出错
我生成了DDL,看起来像这样
CREATE TABLE "EVP"."EvMetadata"
("EvMetadataId" NUMBER(10,0) GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ,
"InsertDate" TIMESTAMP (6), …Run Code Online (Sandbox Code Playgroud) 我的目标是让我的容器数据库进入挂载模式以执行系统更改语句以启用闪回功能。
环境:操作系统 Win 8.1 64 位、Oracle 12c (12.1.0.2.0) 64 位
我验证了我的侦听器和数据库服务都在运行。
监听器日志
Tue Sep 08 13:31:42 2015 系统参数文件为 C:\OracleServer\product\12.1.0\dbhome_1\network\admin\listener.ora 日志消息写入 C:\OracleServer\diag\tnslsnr\NA-D02979\ Listener\alert\log.xml 跟踪信息写入 C:\OracleServer\diag\tnslsnr\NA-D02979\listener\trace\ora_9672_20416.trc 跟踪级别当前为 0
从 pid=9672 开始侦听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.105.118)(PORT=1521))) 侦听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= 127.0.0.1)(PORT=1521))) 侦听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.\pipe\EXTPROC1521ipc))) 侦听器在启动时已完成向 CRS 的通知
时间戳 * 连接数据 [* 协议信息] * 事件 [* SID] * 返回代码 监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=NA-D02979.vgnet.volgrp.com)(PORT=5500) )(Security=(my_wallet_directory=C:\ORACLESERVER\admin\CDB1\xdb_wallet))(Presentation=HTTP)(Session=RAW)) 动态地址已侦听 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= 127.0.0.1)(PORT=1521))) 2015 年 9 月 8 日 13:32:25 * service_register * cdb1 * 0 2015 年 9 月 8 日 13:33:22 * service_update * cdb1 * 0
SqlPlus 的结果 …
我正进入(状态
ERROR:
ORA-12560: TNS:protocol adapter error
Run Code Online (Sandbox Code Playgroud)
尝试以 SYSDBA 身份登录时出现适配器错误。我做了一些研究,发现首先在 Windows 服务中没有任何OracleJobSchedulerdb12gr1; OracleServicedb12gr1.. ETC
所以我添加了它们并开始:
C:\Windows\system32>oradim -new -sid db12gr1
Run Code Online (Sandbox Code Playgroud)
所以我也启动了一个监听器:
C:\Windows\system32>lsnrctl start
Run Code Online (Sandbox Code Playgroud)
之后,当我检查状态时,我得到:
C:\Windows\system32>lsnrctl status
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary...
Service "XE" has 1 instance(s).
Instance "XE", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Run Code Online (Sandbox Code Playgroud)
不确定这是否是我放弃所有其他问题的UNKNOWN问题,看起来像这样(在listener.ora中):SID_LIST_LISTENERlistener.oraLISTENER
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = …Run Code Online (Sandbox Code Playgroud) 我的示例仅返回BMW 2010. 我怎样才能让它AUDI 2000返回BMW 2010?
declare
sample_json varchar2 (32767)
:= '
[{"NAME":"AUDI","YEAR":"2000"},{"NAME":"BMW","YEAR":"2010"}]
';
begin
apex_json.parse (sample_json);
dbms_output.put_line (apex_json.get_varchar2 ('NAME'));
dbms_output.put_line (apex_json.get_varchar2 ('YEAR'));
end;
Run Code Online (Sandbox Code Playgroud) 我正在尝试指定 SharePoint 位置的文件路径。例如,如果 URL 是这样的,那么处理 URL 中的空格的最佳方法是什么?
file_path_ varchar2(2000) := 'https://business123.sharepoint.com/sites/TEST/Private Documents/Export Test';
Run Code Online (Sandbox Code Playgroud)
原始 URL 在“私有”和“文档”以及“导出和测试”之间有 %20。我尝试过与 inside 串联|| '' ||并使用" "inside ' '。有没有办法从 SharePoint 生成不同的 URL?尝试写入文件夹位置的用户具有完全访问权限和权限,因此我知道不是这样,而是阻止我写入该文件夹。
有人有什么很酷的想法吗?提前谢谢了。
如果我从 admin1 访问表 emp,则使用下面的函数,理想情况下它应该返回 0,这表示连接用户为“ADMIN”,但它返回 1(最终用户的连接使用 ADMINT_TEST1.emp)
即使选择audit_test1.emp(函数 check_user 在两种模式中都可用),我也希望获得 ADMIN1 用户的连接标识,例如:来自 admin1 用户
create or replace function check_user
return number
is
n number;
begin
SELECT sys_context('USERENV', 'CURRENT_USER') into usrname FROM dual;
if (usrname ='AUDIT_TEST') then
dbms_output.put_line('show user'||usrname);
return 1;
else
return 0;
end if;
end ;
Run Code Online (Sandbox Code Playgroud)
测试功能(从用户运行:ADMIN1)
declare
n number(1);
begin
select audit_test.check_user into n from dual;
dbms_output.put_line(n);
select check_user into n from dual;
dbms_output.put_line(n);
end;
/
Output
===============
show user AUDIT_TEST
1
show user ADMIN1
0
Run Code Online (Sandbox Code Playgroud)
这是预期的功能吗?即使发起用户是 ADMIN1,当我们发出 …
嗨,我正在使用SQL * Loader,但它给我一个错误
SQL * Loader-128:无法开始会话
ORA-28040:没有匹配的身份验证协议。
在匿名块中,我有一个空/空的输入字符串,并且想要针对非空字符串进行检查。例子:
DECLARE
v_notnull varchar2(50):='this string is never null';
v_input varchar2(50):='';
BEGIN
IF trim(v_input) != trim(v_notnull) THEN
dbms_output.put_line('the strings do NOT match');
ELSE
dbms_output.put_line('the strings DO match');
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当我运行这个块时,'the strings DO match'即使我输入''与 string 不同的空字符串(又名 null),输出也始终v_input是这样'this string is never null'。如何确保 oracle 覆盖空字符串大小写?当v_input为空时我希望输出为'the strings do NOT match'.
我正在使用 Sum() Over (Partition by ...Order by ..) 函数来计算列的运行总计,但只要值重复(或重复),就会出现问题。Sum() over 似乎按值对它们进行分组,并将所有按值分组的总和作为移动总和。这不是我想要实现的目标。任何关于为什么它作为重复值的分组发生以及如何在不按行进行光标循环的情况下获得正确的运行总计的想法或输入,我们深表赞赏。下面是测试表及其数据的详细信息,并附加了包含预期结果的文件(附加文件中突出显示的列是 Oracle Sum() 计算错误的内容)。
CREATE TABLE RUNNINGTOTAL_TEST1
(
A1 NUMBER(10,0),
A2 VARCHAR2(20 BYTE),
A2SUBCLASS VARCHAR2(1000 BYTE),
A2CONTRI FLOAT(126),
DENSERNK NUMBER);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2231113','CLASS1',0,1);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2231216','CLASS1',0,1);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2232517','CLASS1',0.0015,2);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2274031','CLASS1',0.0045,3);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2281035','CLASS1',0.0045,3);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2309174','CLASS1',0.0045,3);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2243993','CLASS1',0.0045,3);
Insert into RUNNINGTOTAL_TEST1 (A1,A2,A2SUBCLASS,A2CONTRI,DENSERNK) values
(22418,'2301871','CLASS1',0.0045,3);
Insert into …Run Code Online (Sandbox Code Playgroud) 我是PL / SQL的新手,并且遇到以下情况。
在下面的脚本中,如果他们发现任何异常,我希望脚本继续进行迭代。处理了异常,但是我无法在循环外执行continue语句。
declare
l_max_ID number;
l_Temp_val number;
type array_t is varray(135) of varchar2(30);
arrayTable array_t := array_t('YSXQTAAA', 'YSXQTAFA', ... );
array array_t := array_t('YSXQNAAA', 'YSXQNAFA', ...);
begin
dbms_output.put_line(arrayTable.count);
for i in 1..arrayTable.count loop
dbms_output.put_line('Tabla impactada ' || arrayTable(i));
execute immediate 'select max(id)+1 from ' || arrayTable(i) into l_max_ID;
execute immediate 'alter sequence ' || array(i) || ' restart start with ' || TO_CHAR(l_Max_ID);
dbms_output.put_line('alter sequence RS1.' || array(i) || ' restart start with ' || TO_CHAR(l_Max_ID));
end loop; …Run Code Online (Sandbox Code Playgroud)