小编Ale*_*ole的帖子

Oracle impdp抛出ORA-39088错误

我正在尝试从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)

这个错误的原因是什么?

oracle import impdp

4
推荐指数
1
解决办法
3万
查看次数

未启用延迟段创建功能(ORA-00439)

我有.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 …

oracle oracle-xe oracle11g

4
推荐指数
1
解决办法
1万
查看次数

如何在Oracle中将CLOB转换为BLOB?

首先,我将图像的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)

oracle plsql

4
推荐指数
1
解决办法
2万
查看次数

Oracle JSON_OBJECT_T 到 Clob

我正在创建一个将 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)

oracle json plsql oracle12c

4
推荐指数
1
解决办法
5874
查看次数

在SQL*Plus中声明绑定变量

我正在使用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)

oracle sqlplus

3
推荐指数
1
解决办法
5万
查看次数

在Oracle中使用ROLLBACK命令

我创建了表

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)

为什么会这样?

oracle rollback oracle11g

3
推荐指数
2
解决办法
2万
查看次数

为什么TO_CHAR在数字的开头添加空格(一个白色字符)?

当我根据这段代码准备这个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)

oracle plsql oracle11g

3
推荐指数
1
解决办法
2288
查看次数

当嵌套表在记录类型中时,如何将数据填充到Oracle中的嵌套表中

我需要能够以游标变量的形式从过程返回值列表.但是在列表中,某些字段可以具有多个值

例如,产品可以在描述字段中具有多个描述行(从不同的表获得).

我正在考虑在记录类型中创建嵌套表并将其与游标相关联.

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_1Field_2.

然后从另一个表我需要分配多个记录Field_3.

当表是记录中数据类型的一部分时,有人能告诉我如何将数据填充到嵌套表中吗?如何填充后我该如何检查.以及如何将其分配回out参数的游标变量?

oracle plsql

3
推荐指数
1
解决办法
1万
查看次数

执行立即更改序列不工作

我坚持这个非常简单的脚本.它不像我期望的那样工作.

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 immediatedbms_output.put_line,并执行生成的命令手动序列被改变,因为我想.

我错过了什么?

oracle plsql sequence execute-immediate

3
推荐指数
1
解决办法
4950
查看次数

两个计数语句之间的差异

我在 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)

sql oracle

3
推荐指数
1
解决办法
3841
查看次数