有没有人注意到这种现象一次dbms_output.put_line无法打印超过2000个字符?
脚本是:
set serveroutput on size 100000;
declare
    big_str varchar2(2009);
begin
    for i in 1..2009 loop
        big_str := big_str||'x';
    end loop;
    dbms_output.put_line(length(big_str));
    dbms_output.put_line(big_str);
end;
/
我将输出复制并粘贴到编辑器(Notepad ++)中,该编辑器告诉我只有2000个字符,而不是2009年我认为应该粘贴的字符.我的一些测试脚本也会出现这种情况 - 只打印2000个字符.
我有一个解决方法来打印像这样:
dbms_output.put_line(length(big_str));
dbms_output.put_line(substr(big_str,1,1999));
dbms_output.put_line(substr(big_str,2000));
这会在输出中添加新行,使您在使用文本时预先格式化时难以阅读.
有没有其他人注意到这一点?它真的是一个错误或某种模糊的功能吗?有更好的解决方法吗?那里有其他任何信息吗?
Oracle版本是:10.2.0.3.0,使用PL/SQL Developer(来自Allround Automation).
我正在使用PL/SQL开发人员调试Oracle软件包,但我遇到了一个问题 - 其中一个参数是CLOB(它是一个很大的XML字符串).我可以从应用程序端传入它并使其成为CLOB,但在PL/SQL调试器中,我将XML的字符串表示形式放入调试器中,以便包中的proc将其视为CLOB?就目前而言,当设置它,然后进入包时,参数计算为NULL,但字符串很好.

我想在一列中显示所有值.我该怎么办?
数据如下所示:
-----------------------------------------------
| user_id | degree_fi | degree_en | degree_sv |
-----------------------------------------------
| 3601464 | 3700      |  1600     |  2200     |
|  1020   | 100       |  0        |   0       |
| 3600520 |  100      | 1300      |  1400     |
| 3600882 |  0        |   100     |  200      |
| 3600520 |  3200     |   800     |  600      |
| 3600520 |  400      | 3000      |  1500     |
-----------------------------------------------
我想拥有的是:
-------------------------------------------------------------
| user_id | degree_fi    | degree_en       | degree_sv       |
-------------------------------------------------------------- …我想在过程中调用函数并获取它的值,以便我可以在过程中使用,但我不知道该怎么做?有任何想法吗 ??我的函数如下,该函数返回其工资超出最高或最低工资的员工 ID 的集合,我想在程序中使用该值将这些员工的工资更新为最低工资?
我收到这个错误:
cannot perform a DML operation inside a query
当我试图执行查询
select st_atten_up(1,7) from dual;
代码如下.
create or replace FUNCTION st_atten_up(stu_id IN student_info.id%type,app_mon IN student_attendence.month%type) 
RETURN NUMBER 
IS 
att1 NUMBER;
BEGIN SELECT ATTENDANCE into att1 FROM student_attendence 
WHERE student_attendence.id = stu_id and student_attendence.month = app_mon; 
att1 := att1 + 1;
UPDATE student_attendence SET ATTENDANCE = att1 
where id = stu_id and month = app_mon;
return att1;
END;
提前致谢.
假设我SELECT在同一张表上有两个查询,我需要逐列比较它们。
查询1:
select * from mytable t1 where  t1.code = '100'
返回:
id           name
1            A
2            B
查询2:
select * from mytable t2 where  t2.code = '999'
返回:
id           name
1            A
2            C
就我而言,两个查询都返回相同数量的行。
所需结果
id           name_t1     name_t2
2            B           C
如何使用PL / SQL开发人员发现它们之间的数据差异(最好使用工具来避免查询)?
我的PL / SQL Developer版本8.0.3.1510
我正在使用 PL/SQL developer 11.0.6.1796 的试用版,并尝试使用 ctrl + 单击导航 从包主体A跳转到包主体B。
而不是跳转到 B 包主体- 我被带到了 B 包规范。是否有任何开关/首选项可用于指示您要跳转到整个包中的哪个位置,或者这只是不受支持?
Toad 中的示例功能:https : //www.toadworld.com/products/sql-navigator/f/51/t/21833
SQL SQLDeveloper 在包体和包规范之间跳转的相关 SO 问题
这是一个简单的查询: select * from customers
当我在PL/SQL Developer中编写此查询并按F5时,我会看到解释计划,但我不知道成本,基数和字节代表什么.
是否可以指定哪个是创建表作为选择语句的主键?我的目标是在创建表上包含主键的声明,而不是在创建后修改表。
CREATE TABLE suppliers
AS (SELECT company_id, address, city, state, zip
  FROM companies
  WHERE company_id < 5000);
我想在 Oracle 中重命名调度程序作业,这可能吗?
dba_scheduler_jobs(owner = "db", name = "my_job")
=> dba_scheduler_jobs(owner = "db", name = "my_own_job");
感谢您的回答。
plsqldeveloper ×10
oracle ×9
plsql ×5
editor ×1
function ×1
oracle10g ×1
oracle11g ×1
sql ×1
sql-scripts ×1
sql-tuning ×1