我正在尝试从Oracle 10g数据泵实用程序创建的转储文件中导入数据.我发出的命令是
impdp \"username/password @ DB as sysdba \"remap_schema = SRC_SCHEMA:TARGET_SCHEMA remap_tablespace = source_tablespace:target_tablespace DUMPFILE = db.dmp
我收到以下错误消息:
ORA - 39001: Invalid argument value
ORA - 39000: Bad dump file spcification
ORA - 39088: file name cannot contain a path specification
Run Code Online (Sandbox Code Playgroud)
这个错误的原因是什么?
我有.sql超过60个表的DDL脚本文件.我正在尝试将脚本复制粘贴到SQL Developer中,连接到"Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production"的数据库.
示例DDL脚本:
CREATE TABLE UserName."Table_Name"
( "Col1" NUMBER(*,0),
"Col2" VARCHAR2(50 BYTE),
"Col3" VARCHAR2(50 BYTE)
) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
TABLESPACE "USERS" ;
Error report -
SQL Error: ORA-00439: feature not enabled: Deferred Segment Creation
00439. 00000 - "feature not enabled: %s"
*Cause: The specified feature is not enabled.
*Action: Do not attempt to use this feature.
Run Code Online (Sandbox Code Playgroud)
如果我SEGMENT CREATION …
首先,我将图像的BLOB转换为CLOB,然后将该CLOB转换回BLOB。我看不到重新转换的图像。我怎么解决这个问题?
blob_to_clob函数:
CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB) RETURN CLOB AS
v_clob CLOB;
v_varchar VARCHAR2(32767);
v_start PLS_INTEGER := 1;
v_buffer PLS_INTEGER := 32767;
BEGIN
DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)
LOOP
v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start));
DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);
v_start := v_start + v_buffer;
END LOOP;
RETURN v_clob;
END blob_to_clob;
Run Code Online (Sandbox Code Playgroud)
clob_to_blob函数:
CREATE OR REPLACE FUNCTION clob_to_blob2(p_clob IN CLOB) RETURN BLOB IS
v_blob BLOB;
v_offset NUMBER DEFAULT 1;
v_amount NUMBER DEFAULT 4096;
v_offsetwrite NUMBER DEFAULT 1;
v_amountwrite …Run Code Online (Sandbox Code Playgroud) 我正在创建一个将 JSON CLOB 作为 IN OUT 参数的过程。我的问题是如何将 JSON_OBJECT_T 转换为 CLOB?我希望在 CLOB 中维护 JSON 结构,而不仅仅是存储 json 值(请参阅下面的 JSON_OBJECT_T.GET_CLOB('firstname'))。
我的示例测试代码:
CREATE TABLE employees
( employee_id NUMBER(6)
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn NOT NULL
, email VARCHAR2(25)
CONSTRAINT emp_email_nn NOT NULL
, phone_number VARCHAR2(20)
, hire_date DATE
CONSTRAINT emp_hire_date_nn NOT NULL
, job_id VARCHAR2(10)
CONSTRAINT emp_job_nn NOT NULL
, salary NUMBER(8,2)
, commission_pct NUMBER(2,2)
, manager_id NUMBER(6)
, department_id NUMBER(4)
, CONSTRAINT emp_salary_min
CHECK (salary > 0)
, CONSTRAINT emp_email_uk …Run Code Online (Sandbox Code Playgroud) 我正在使用SQL*Plus.当我使用以下查询时,它给出错误
Error report:
ORA-06550: line 4, column 1:
PLS-00428: an INTO clause is expected in this SELECT statement
Run Code Online (Sandbox Code Playgroud)
询问
declare
id varchar2(80) :='test123';
begin
select test_quote,test_id from order_link where id = 'test123';
end;
Run Code Online (Sandbox Code Playgroud) 我创建了表
SQL>CREATE TABLE Student
(
StudID NUMBER(6),
StudName VARCHAR2(25),
JoinDate DATE
);
Table created.
SQL>INSERT INTO Student
VALUES (123,'JOHN',SYSDATE);
1 row created.
SQL>DELETE Student;
1 row deleted.
Run Code Online (Sandbox Code Playgroud)
我怎么能回来?如果我使用
SQL>ROLLBACK;
Rollback complete.
Run Code Online (Sandbox Code Playgroud)
但在那之后
SQL>SELECT * FROM Student;
no rows selected.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
当我根据这段代码准备这个SQL Fiddle时:
WITH l_cur AS
(SELECT to_char(LEVEL - 1, '0000') dd FROM dual CONNECT BY LEVEL <= 10)
SELECT '''' || d1.dd || '''' o,
'''' || d2.dd || '''' n
FROM (SELECT dd,
row_number() over(ORDER BY 1) rn
FROM l_cur) d1,
(SELECT dd,
row_number() over(ORDER BY dbms_random.random) rn
FROM l_cur) d2
WHERE d1.rn = d2.rn;
O N
------- -------
' 0000' ' 0000'
' 0001' ' 0005'
' 0002' ' 0009'
' 0003' ' 0003'
' 0004' …Run Code Online (Sandbox Code Playgroud) 我需要能够以游标变量的形式从过程返回值列表.但是在列表中,某些字段可以具有多个值
例如,产品可以在描述字段中具有多个描述行(从不同的表获得).
我正在考虑在记录类型中创建嵌套表并将其与游标相关联.
TYPE N_TYPE IS TABLE OF VARCHAR2(350);
TYPE TYPE1 IS RECORD ( FIELD_1 VARCHAR2(100)
, FIELD_2 VARCHAR2(30)
, FIELD_3 N_TYPE);
TYPE T_CUR IS REF CURSOR RETURN TYPE1;
Procedure p_proc (p_1 IN VARCHAR2, p_2 OUT t_cur) is
-- processing input parameter and passing out a cursor to host application
end p_proc;
Run Code Online (Sandbox Code Playgroud)
在这个过程中,我需要传递p_1给一个表并使用显式游标将数据检索到Field_1和Field_2.
然后从另一个表我需要分配多个记录Field_3.
当表是记录中数据类型的一部分时,有人能告诉我如何将数据填充到嵌套表中吗?如何填充后我该如何检查.以及如何将其分配回out参数的游标变量?
我坚持这个非常简单的脚本.它不像我期望的那样工作.
declare
st VARCHAR(1024);
begin
for x in (SELECT sequence_name FROM USER_SEQUENCES) loop
st := 'ALTER SEQUENCE ' || x.sequence_name || ' INCREMENT BY 1000';
execute immediate st;
st := 'select ' || x.sequence_name || '.nextval from dual';
execute immediate st;
st := 'ALTER SEQUENCE ' || x.sequence_name || ' INCREMENT BY 1';
execute immediate st;
end loop;
end;
/
Run Code Online (Sandbox Code Playgroud)
当我运行它时它似乎根本不起作用 - 我的所有序列都保持不变,并且它们没有被动态语句增加一千.如果我nextval在匿名阻止之前和之后检查,差异只有1,而不是1001.
如果我更换execute immediate用dbms_output.put_line,并执行生成的命令手动序列被改变,因为我想.
我错过了什么?
我在 SQL 中有两个计数语句,我想知道它们之间的差异。我正在尝试这样的事情。
SELECT 'Customers After', SUM(Counts) Counts
FROM
(SELECT 'Customers Before', COUNT(*) AS Counts FROM CUSTOM3
MINUS
SELECT 'Customers to be', COUNT(*) AS Counts FROM
CUSTOM3 a
WHERE
a.CUSTOMER_FLAG IS NULL
AND NOT EXISTS (SELECT 1 FROM ACC2 acc WHERE acc.CUSTOMER_ID = a.CUSTOMER_ID)
AND CUST_BQ IS NULL);
Run Code Online (Sandbox Code Playgroud)
但它只是返回行数,我应该使用什么而不是 MINUS 或者我应该如何启动它?
我应该得到这样的东西:
Customers After 15
Customers Before 20
Customers to be 5
Run Code Online (Sandbox Code Playgroud)