我在Linux机器上安装了Oracle Database 11gR2以及Oracle Grid Infrastructure,然后创建了orcl数据库.
我一直能够使用SQL*Plus或OEM连接到我的数据库.但是最近,我在输入命令时遇到了一个问题lsnrctl status,所以我无法连接到数据库.
我的listener.ora档案:
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = pc.company.com)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
Run Code Online (Sandbox Code Playgroud)
我的tnsnames.ora文件:
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = pc.company.com)(PORT = 1521))
(CONNECT_DATA …Run Code Online (Sandbox Code Playgroud) 是否可以使用一个insert语句在表中插入多行?我知道如果我这样做会发生:
insert into table ( fields ) select values from another_table
Run Code Online (Sandbox Code Playgroud)
但是如果我想插入怎么办:
row 1 - ( a1, b1, c1 )
row 2 - ( a2, b2, c2 )
...
row n - ( an, bn, cn )
Run Code Online (Sandbox Code Playgroud)
只有一个插入命令?
我有两张桌子,table A:
Customer_ID Product Date Of Sale Pay Meth 1 Pay Meth 2 QTY
----------- ------- ------------ ---------- ---------- ---
123 AB 1/1/2012 111 222 1
123 AB 1/1/2012 111 222 1
456 AC 2/1/2012 333 444 1
Run Code Online (Sandbox Code Playgroud)
并且table B:
Customer_ID Product Date Of Sale Pay Meth 1 Pay Meth 2 QTY
----------- ------- ------------ ---------- ---------- ---
123 AB 1/1/2012 111 222 2
456 AB 1/1/2012 124 111 1
Run Code Online (Sandbox Code Playgroud)
我想,这样的客户记录匹配的数据了123在table A被归纳为: …
在尝试使用BULK COLLECT语句时,我收到了错误ORA-00947: not enough values.
示例脚本:
CREATE OR REPLACE
TYPE company_t AS OBJECT (
Company VARCHAR2(30),
ClientCnt INTEGER );
/
CREATE OR REPLACE
TYPE company_set AS TABLE OF company_t;
/
CREATE OR REPLACE
FUNCTION piped_set (
v_DateBegin IN DATE,
v_DateEnd IN DATE
)
return NUMBER /*company_set pipelined*/ as
v_buf company_t := company_t( NULL, NULL);
atReport company_set;
sql_stmt VARCHAR2(500) := '';
begin
select * BULK COLLECT INTO atReport
from (
SELECT 'Descr1', 1 from dual
UNION
SELECT …Run Code Online (Sandbox Code Playgroud) 我有以下架构
DROP TABLE ALUMNO_ASIGNATURA;
DROP TABLE ASIGNATURA;
DROP TABLE TITULACION;
DROP TABLE PROFESOR;
DROP TABLE ALUMNO;
DROP TABLE PERSONA;
CREATE TABLE PERSONA
( DNI VARCHAR2(9) CONSTRAINT PERSONA_PK PRIMARY KEY,
NOMBRE VARCHAR2(20) CONSTRAINT PERSONA_NOMBRE_NN NOT NULL,
APELLIDO VARCHAR2(30) CONSTRAINT PERSONA_APELLIDO_NN NOT NULL,
CIUDAD VARCHAR2(20),
DIRECCIONCALLE VARCHAR2(30),
DIRECCIONNUM VARCHAR2(3),
TELEFONO VARCHAR2(9),
FECHANACIMIENTO DATE,
VARON VARCHAR2(1) CONSTRAINT PERSONA_VARON_NN NOT NULL
CONSTRAINT PERSONA_VARON_CK CHECK (VARON BETWEEN 0 AND 1)
);
COMMENT ON COLUMN persona.varon IS '0 para mujer, 1 para hombre';
CREATE TABLE PROFESOR …Run Code Online (Sandbox Code Playgroud) 尝试使用¥分隔符加载UTF-8文件时,它在找到字符时不会分隔字段.我们从超过列大小的值中得到ORA-12899错误,因为它试图将整行放入第一列.
在UTF-8中,¥是¥(C2A5),但似乎它试图找到C2C2A5.
数据库设置是
NLS_LANGUAGE SPANISH
NLS_TERRITORY SPAIN
NLS_CURRENCY ?
NLS_ISO_CURRENCY SPAIN
NLS_NUMERIC_CHARACTERS ,.
NLS_CHARACTERSET WE8ISO8859P15
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD/MM/RR
NLS_DATE_LANGUAGE SPANISH
NLS_SORT SPANISH
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY ?
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.3.0
Run Code Online (Sandbox Code Playgroud)
我们尝试过:
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252
Run Code Online (Sandbox Code Playgroud)
我们从具有西班牙语语言环境的Windows 7计算机上的命令窗口运行SQL*Loader.
控制文件:
LOAD DATA
CHARACTERSET UTF8
INFILE 'C:\tmp\xxxy.txt'
BADFILE 'C:\tmp\xxxy.bad'
TRUNCATE INTO TABLE SAMPLE.TEST_CAR_VENCIMI_INTERMED
fields terminated by "¥"
TRAILING NULLCOLS
(
CODE CHAR …Run Code Online (Sandbox Code Playgroud) 这是我用于在oracle数据库中插入多行的查询.但是当我在其中使用序列时,它会引发错误,如ORA-00001:唯一约束.怎么做.
INSERT ALL
INTO POSTAL_CODE( postal_code,desc)
VALUES(postal_code.NEXTVAL,'Coimbatore')
INTO POSTAL_CODE (postal_code,desc)
VALUES(postal_code.NEXTVAL,'Mumbai') SELECT * FROM DUAL;
Run Code Online (Sandbox Code Playgroud) 如何在同一查询中的其他位置使用列别名?在Oracle可以吗?
使用EMP_ID的示例:
SELECT
t1.DATE, t2.NAME, t1.ID,
TO_NUMBER( SUBSTR( t1.NUMBER_ID, - 6)
|| TRIM( TO_CHAR( SUBSTR(EMP_ID, 3, 2), '00' ) ), '999999999999') AS CONTRACT,
t2.ADDRESS,
CASE WHEN SUBSTR(t2.COD_EMP, 0, 2) != 'PG' THEN 'PG00'
|| t2.COD_EMP ELSE t2.COD_EMP END AS EMP_ID
FROM
TABLE_01 t1
INNER JOIN TABLE_02 t2 .....
Run Code Online (Sandbox Code Playgroud) 我正在学习 Java 泛型并阅读泛型方法。
此页面开头为
考虑编写一个方法,该方法接受一个对象数组和一个集合,并将数组中的所有对象放入集合中
然后它指出
到现在为止,您将学会避免初学者尝试使用
Collection<Object>集合参数的类型的错误。
该页面推断使用Collection<Object>将不起作用。
为什么这是一个错误?为什么这是初学者的错误?
Collection<Object>因为该参数对我来说效果很好。我是不是太初学者了,以至于我以某种方式编写了可以工作的代码,但却错过了练习的重点?
import java.util.ArrayList;
import java.util.Collection;
public class test {
static void fromArrayToCol(Object a[],Collection<Object> c)
{
for (Object x:a){c.add(x);}
System.out.println(c);
}
public static void main(String[] args) {
test r=new test();
Object[] oa=new Object[]{"hello",678};
Collection<Object> c=new ArrayList<>();
test.fromArrayToCol(oa,c);
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,Oracle 的教程的断言是错误的。但我是初学者,所以很可能我没有理解它想告诉我的内容。
我想创建一个生成以下值的序列:
A00000000
A00000001
..
..
..
A99999999
B00000000
B00000001
..
..
Run Code Online (Sandbox Code Playgroud)
它应该用初始字母字符A生成,一旦达到A99999999,它应该更改为B,依此类推.
Oracle中的正常序列不会提供字母数字序列.如何在此模式中生成顺序值?
oracle ×9
sql ×4
plsql ×3
object ×2
oracle11g ×2
sequence ×2
bulkinsert ×1
collections ×1
delimiter ×1
function ×1
generics ×1
java ×1
oracle10g ×1
sql-insert ×1
sql-loader ×1
usertype ×1
utf-8 ×1