标签: plsql

什么时候使用 PL/SQL?

我制作的每个应用程序都位于数据库、Web 堆栈之上,并以 Oracle 作为存储库。Oracle PL/SQL 对我来说一直是个谜。你什么时候使用它?是否仅在存储过程中(我也不做很多。)

您什么时候使用 Oracle PL/SQL?

plsql oracle11g

-1
推荐指数
1
解决办法
924
查看次数

PL/SQL - 两个日期之间的天数

我有下面的脚本,我希望脚本只显示两天之间的天数,基本上删除了数字前面的负号。这可能吗?

select (TO_DATE(START_DATE, 'DD-MM-YYYY') - TO_DATE(END_DATE, 'DD-MM-YYYY')) AS days 

From testtable1
Run Code Online (Sandbox Code Playgroud)

输出是:

Days
 -5
 -6
    etc. 
Run Code Online (Sandbox Code Playgroud)

plsql

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

pl sql dbms_lob.substr 或 regex_substr 在新行之间获取文本

我得到了一个带有包含下一个字符串的 clob 字段的表:

"hello world Chr(13)
hello world 2 chr(13)
hello world 3"
Run Code Online (Sandbox Code Playgroud)

我试图hello world 2在第一个和最后一个断行之间获取文本“ ”,但我仍然不能。

我尝试成功DBMS_LOB.INSTRregexp_substr失败......有人可以在这里帮助我吗?

非常感谢。

oracle plsql

-1
推荐指数
1
解决办法
766
查看次数

Oracle - 如何区分空字符串和非空字符串?

在匿名块中,我有一个空/空的输入字符串,并且想要针对非空字符串进行检查。例子:

DECLARE 
v_notnull varchar2(50):='this string is never null';
v_input varchar2(50):='';
BEGIN
    IF trim(v_input) != trim(v_notnull) THEN
        dbms_output.put_line('the strings do NOT match');
    ELSE 
        dbms_output.put_line('the strings DO match');
    END IF; 
END;
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当我运行这个块时,'the strings DO match'即使我输入''与 string 不同的空字符串(又名 null),输出也始终v_input是这样'this string is never null'。如何确保 oracle 覆盖空字符串大小写?当v_input为空时我希望输出为'the strings do NOT match'.

oracle null plsql varchar2 oracle12c

-1
推荐指数
1
解决办法
2386
查看次数

(a == 1 && a == 2 && a == 3)在pl sql中评估为true?

就像这里的一些问题一样,(a == 1 && a == 2 && a == 3)已经证明它可以在javascript中被评估为true而我只是想知道PL/SQL中是否还有一种方法评估它也是真的.

plsql oracle11g

-1
推荐指数
1
解决办法
408
查看次数

dbms_lock.sleep遇到代码时无法正常工作

DBMS_LOCK.sleep(50);在代码中间使用过.

但是,当我运行PL/SQL代码时.看起来它在开始时运行'DBMS_LOCK.sleep`而不是在睡眠代码之前执行代码.

请建议一些解决方案,在PL/SQL代码中添加大约50秒的延迟.

oracle plsql sleep delay

-1
推荐指数
1
解决办法
495
查看次数

oracle中如何更改序列顺序而不删除序列

我当前的序列号是 203,我需要跳转到 1203,而不删除序列。

sql oracle plsql sequence

-1
推荐指数
1
解决办法
4308
查看次数

错误处理后PL / SQL继续执行

我是PL / SQL的新手,并且遇到以下情况。

在下面的脚本中,如果他们发现任何异常,我希望脚本继续进行迭代。处理了异常,但是我无法在循环外执行continue语句。

declare
  l_max_ID number;
  l_Temp_val number;
  type array_t is varray(135) of varchar2(30);
  arrayTable array_t := array_t('YSXQTAAA', 'YSXQTAFA', ... );
  array array_t := array_t('YSXQNAAA', 'YSXQNAFA', ...);
begin
    dbms_output.put_line(arrayTable.count);

    for i in 1..arrayTable.count loop
        dbms_output.put_line('Tabla impactada ' || arrayTable(i));
        execute immediate 'select max(id)+1 from ' || arrayTable(i) into l_max_ID;
        execute immediate 'alter sequence ' || array(i) || ' restart start with ' || TO_CHAR(l_Max_ID);
        dbms_output.put_line('alter sequence RS1.' || array(i) || ' restart start with ' || TO_CHAR(l_Max_ID));
    end loop; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql loops exception oracle12c

-1
推荐指数
1
解决办法
46
查看次数

PL/SQL 块问题

我正在尝试分块获取数据并插入表中以满足业务需求。


declare
  i_start_date  date := date '2019-01-01'; --start date set
  i_end_date    date := date '2019-12-31'; --end date set
begin

for i_start_date<=i_end_date --condition to fetch data & insert
  (for cur_r in (select a.id, b.status
                from table1 a join table2 b on a.msg_id = b.msg_id
                where b.t_date = i_start_date
               )
  loop
    insert into test_table (id, status)
      values (cur_r.id, cur_r.status);
  end loop;)

  i_start_date+1 -- increment start date


end;
/
Run Code Online (Sandbox Code Playgroud)

你能帮我修复上面的块吗?

谢谢,

oracle plsql

-1
推荐指数
1
解决办法
54
查看次数

我如何在序列中有 3 位数字的数字列 (Oracle) 中找到所有记录

我如何在数字列 (Oracle) 中找到 Sequence 中有 3 位数字的所有记录。我是否必须使用 substr 将数字分解为单个数字,然后减去第一个和第二个数字以查看它们是 1 还是 -1?有没有更好的方法来做到这一点?我可以将数字分解为数字并将它们传递给 pl/sql 块中的 varray 吗?请帮忙。

在此处输入图片说明

regex sql oracle plsql loops

-1
推荐指数
1
解决办法
65
查看次数

标签 统计

plsql ×10

oracle ×7

loops ×2

oracle11g ×2

oracle12c ×2

sql ×2

delay ×1

exception ×1

null ×1

regex ×1

sequence ×1

sleep ×1

varchar2 ×1