java.library.path sql developer windows 7 中没有 ocijdbc11
这是我的 tnsnames.ora
89# tnsnames.ora Network Configuration File: M:\app\oracleuser\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
DOCASSIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DOCASSIST)
)
)
Run Code Online (Sandbox Code Playgroud)
这是听众.ora
# listener.ora Network Configuration File: M:\app\oracleuser\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = M:\app\oracleuser\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:M:\app\oracleuser\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
)
DOCASSISTLISTENER =
(DESCRIPTION_LIST …Run Code Online (Sandbox Code Playgroud) oracle tnsnames database-connection oracle-sqldeveloper ojdbc
以下是我用来在我的数据库中部署 SQL 脚本的一小段代码。我只是想知道我是否可以根据结果自动执行此提交或回滚任务。
disc
connect username/password@database
spool D:\Deployments\path\to\logfile\logfile.log
@D:\Deployments\path\to\script\sqlquery_script.sql
Run Code Online (Sandbox Code Playgroud)
如果 sql 脚本成功运行而没有任何错误意味着我希望系统自动提交它,如果发生任何错误,所有事务都应该回滚(请注意,我的 sql 脚本有很多更新语句)
当我使用WHENEVER SQLERROR EXIT SQL.CODE ROLLBACK;SQL* plus 窗口关闭时,没有显示任何错误。
请帮助解决这个问题。
我必须在一个单元格中显示多个单元格值。所以我使用这个查询:
select LISTAGG(fc.DESCRIPTION, ';'||chr(10))WITHIN GROUP (ORDER BY fc.SWITCH_NAME) AS DESCRIP from "ORS".SWITCH_OPERATIONS fc
group by fc.SWITCH_NAME
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是当我将它与我的主(完整)查询合并时,我得到的错误是:错误代码 1427,SQL 状态 21000:ORA-01427:单行子查询返回多于一行
这是我的完整查询:
SELECT
TRACK_EVENT.LOCATION,
TRACK_EVENT.ELEMENT_NAME,
(select COUNT(*) from ORS.TRACK_EVENT b where (b.ELEMENT_NAME = sw.SWITCH_NAME)AND (b.ELEMENT_TYPE = 'SWITCH')AND (b.EVENT_TYPE = 'I')AND (b.ELEMENT_STATE = 'NORMAL' OR b.ELEMENT_STATE = 'REVERSE'))as COUNTER,
(select COUNT(*) from ORS.SWITCH_OPERATIONS fc where TRACK_EVENT.ELEMENT_NAME = fc.SWITCH_NAME and fc.NO_CORRESPONDENCE = 1 )as FAIL_COUNT,
(select MAX(cw.COMMAND_TIME) from ORS.SWITCH_OPERATIONS cw where ((TRACK_EVENT.ELEMENT_NAME = cw.SWITCH_NAME) and (cw.NO_CORRESPONDENCE = 1)) group by cw.SWITCH_NAME ) as …Run Code Online (Sandbox Code Playgroud) 我创建了一个用户并授予它权限,但我无法从 SQL Developer 以该用户身份连接到数据库。
当我在 SQL*Plus 中输入代码时,它显示它已连接,如下图所示

但是,当我在 Oracle SQL Developer 中尝试同样的事情时,它显示我是 SYS 用户。

如何解决这个问题?
编辑
我试图通过生成自动增量数字将大约25k行插入表中.我的自动增量数是19位数.
例如,对于一行,我的查询如下所示:
insert into myTable(From_Value,To_Value)
values('6001761093000000000','6001761093999999999');
Run Code Online (Sandbox Code Playgroud)
我的两列都是VARCHAR2(20 BYTE)数据类型.
如何通过自动递增From_Value和To_Value?来编写用于插入大约25k行的优化代码?
提前致谢.
我只需要在PL/SQL代码中运行一个基本的SELECT查询.以下代码完美无缺:
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM ' || 'TNAME';
END;
/
Run Code Online (Sandbox Code Playgroud)
但是遵循代码
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM :1' USING 'TNAME';
END;
/
Run Code Online (Sandbox Code Playgroud)
提出错误说
ORA-00903:表名无效
ORA-06512:第2行
*原因:
*行动:
我不能以任何方式使用"USING"传递表名吗?
我正在尝试在 Ubuntu 18 上使用 Oracle 12c 来学习我的工作。
为此,我正在使用我曾经在其他 PC 上创建的 docker-compose 文件。
version: '2'
services:
database:
image: store/oracle/database-enterprise:12.2.0.1
volumes:
- ./data:/ORCL # persistent oracle database data.
ports:
- 1529:1521
- 8082:8080
- 5500:5500
Run Code Online (Sandbox Code Playgroud)
安装后,我可以以系统管理员身份登录,然后在下面输入这些代码以创建用户。
version: '2'
services:
database:
image: store/oracle/database-enterprise:12.2.0.1
volumes:
- ./data:/ORCL # persistent oracle database data.
ports:
- 1529:1521
- 8082:8080
- 5500:5500
Run Code Online (Sandbox Code Playgroud)
然后,我尝试连接到它。
sqlplus BUS/DEMO_PASS@localhost:1529/ORCLCDB.localdomain
Run Code Online (Sandbox Code Playgroud)
我想像在其他 PC 上一样登录,但不是这样,我收到了这个错误。
ORA-01017: invalid username/password; logon denied
Run Code Online (Sandbox Code Playgroud) 如果我使用相同的 cod_regista 插入多于一行,它会创建重复项,我该如何消除它们?每个值我只需要一个记录
CREATE OR REPLACE TRIGGER piazzetta_trg
BEFORE INSERT OR UPDATE
ON regia_piazzetta
FOR EACH ROW
BEGIN
IF INSERTING THEN
FOR a IN(SELECT cod_regista, SUM(costo_produzione) as tot
FROM regia_piazzetta
GROUP BY cod_regista)
LOOP
INSERT INTO piazzetta_tot VALUES (a.cod_regista, a.tot);
END LOOP;
UPDATE piazzetta_tot SET costo_totale = costo_totale + :new.costo_produzione WHERE piazzetta_tot.id_regista = :new.cod_regista;
END IF;
IF UPDATING THEN
UPDATE piazzetta_tot SET costo_totale = costo_totale+(:new.costo_produzione - :old.costo_produzione) WHERE piazzetta_tot.id_regista = :new.cod_regista;
END IF;
END;
Run Code Online (Sandbox Code Playgroud) CREATE OR REPLACE FUNCTION FN_MULTAS_TOTAL
RETURN INTEGER
IS
V_TOTAL INT;
BEGIN
SELECT SUM(MULTA)
INTO V_TOTAL
FROM DETALLE_ARRIENDO;
RETURN V_TOTAL;
END;
Run Code Online (Sandbox Code Playgroud)
我正在开发 SQL Developer 11,我必须用
exec FN_MULTAS_TOTAL;
Run Code Online (Sandbox Code Playgroud)
并获得一个整数值
我刚刚创建了一个列同义词
CREATE PUBLIC SYNONYM col_syn FOR X_CHILD.FIRST_NAME;
这是执行没有错误。
但是当我说
select dob, col_syn from x_child;
我明白了:
ORA-00904: "COL_SYN": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 4 Column: 13
Run Code Online (Sandbox Code Playgroud)
列“first_name”肯定存在:
select * FROM x_child;
显示:

我已按提交至少 18 次并重新启动 SQL 开发人员。这没有帮助。
另外,当我点击这个模式中的同义词时,那里什么也没有。我能看到的唯一同义词是表同义词。我应该也能在这里看到列同义词吗?