标签: plsql

oracle批量删除:从表中删除数组中的列

我正在尝试收集一系列修订版数字.
我将用于删除多个审计表中的记录.
所以我编写了一个plsql来收集该数组,并根据使用该数组的条件在其他表上运行delete

declare 
  type NumberArray is table of number index by binary_integer;
  revisions NumberArray;
Begin
  select rev bulk collect into revisions from (
    select t.rev, row_number() over (partition by 
        column1,
        column2
        order by column3) rn
    from table1 t)
  where rn <> 1;

  dbms_output.put_line(revisions.count || ' records found from table2 to be deleted');
  delete from table2 where rev in (revisions);
  dbms_output.put_line('deleted from table2');
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

 PLS-00382: expression is of wrong type
 06550. 00000 -  "line %s, column %s:\n%s"
 *Cause:    Usually a …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

0
推荐指数
1
解决办法
5905
查看次数

遍历循环以查找重复的名称

我从查询得到以下结果,我是一个plsql块,我在其中循环记录和send_email给客户.

在此输入图像描述

匿名阻止

FOR i IN (SELECT product_no, product_holder,product_catalogue FROM
product_master)
LOOP
mail_send('PRODMASTER',i.product_holder, i.product_no,i.product_catalogue);
END LOOP;
Run Code Online (Sandbox Code Playgroud)

我想知道什么是最好的方法,如果product_holder在查询结果中重复,而不是发送多封电子邮件,想发送一封包含相关细节的电子邮件.例如,在上述情况下SMITH重复两次,所以用上面的方法将史密斯拿到两封电子邮件,而不是我想发一封电子邮件SMITH与product_no和product_catalogue

我怎样才能做到这一点?

sql oracle plsql

0
推荐指数
1
解决办法
69
查看次数

在PL/SQL的LIKE条件中使用变量

我有一个要求,我需要搜索所有记录,如'00456159 /%'.在数据库中有两个记录00456159/A和00456159/I. 但是在下面我正在使用它的代码中没有给出任何记录.有人指出我正在做的错误吗?谢谢,

SET SERVEROUTPUT ON;
DECLARE

Cursor c2(v_comp IN VARCHAR2) is select  distinct rate_agreement_nbr rag FROM APL_PRICING.rate_agreement 
WHERE  RATE_AGREEMENT_NBR like   ''''||v_comp||'%'||'''';

v_comp1 VARCHAR2(15);

BEGIN

v_comp1 :=SUBSTR('00456159/A',1,9);

For v_rec in c2(v_comP1)
loop
    DBMS_OUTPUT.PUT_LINE(v_rec.rag);
end loop;

END;
Run Code Online (Sandbox Code Playgroud)

oracle plsql

0
推荐指数
1
解决办法
148
查看次数

在Oracle中使用软件包的优缺点

我对使用软件包很陌生。我的团队正在决定是否在我们的应用程序中使用软件包。我们有4个应用程序当前正在使用嵌入式SQL。我们决定将每个sql语句放入存储过程中,然后在逻辑上将存储过程分组到包中(这些存储过程将在应用程序之间共享)。使用软件包的潜在利弊是什么?

我们的应用程序是使用c#在asp.net中编写的。

asp.net oracle plsql stored-procedures packages

0
推荐指数
1
解决办法
791
查看次数

CRUD Oracle数据库的存储过程

我有一个oracle数据库,想要一种简单的方法来生成crud的存储过程(Create,Retrieve,Update,Delete).我一直在网上搜索,但找不到合适的工具.

oracle plsql procedure crud

0
推荐指数
1
解决办法
3566
查看次数

PL/SQL为时间戳参数添加小时数

我有参数

:dateFrom 
Run Code Online (Sandbox Code Playgroud)

它将在函数中用作TIMESTAMP的参数.我需要添加到:dateFrom + 7小时,我该怎么做?

plsql oracle-sqldeveloper

0
推荐指数
1
解决办法
2984
查看次数

ORA-00934:此处不允许使用组功能

我编写了一个存储过程,我希望将两个计数值添加到集合中,使用以下代码:

PROCEDURE generate(code_in in VARCHAR2
                 , value_1 out NUMBER
                 , value_2 out NUMBER) is
BEGIN
    SELECT 
        COUNT(CASE WHEN type = 'A' THEN 1 ELSE NULL END) INTO value_1
        , COUNT(CASE WHEN type IN ('B','D') THEN 1 ELSE NULL END) INTO value_2
    FROM table
    WHERE code = code_in;
END generate;
Run Code Online (Sandbox Code Playgroud)

但是在运行代码时出现以下错误:

ORA-00934:此处不允许使用组功能

如果我删除第二个COUNT存储过程编译得很好,但是当我添加第二行时,我得到错误.

任何人都可以帮助解释为什么会这样吗?请注意,我对Oracle的经验很少.

oracle plsql select-into oracle11g

0
推荐指数
1
解决办法
3026
查看次数

PL/SQL过程可以拥有的最大参数数量是多少?

我需要开发一个PL/SQL过程,至少需要传递26个参数.PL/SQL过程可以拥有的最大参数数量是多少?拥有大量参数会带来什么后果?会不会给您带来不便?

oracle plsql

0
推荐指数
1
解决办法
7242
查看次数

在oracle正常分布

我想在PL/Sql中生成正态分布 - Oracle.我知道我们可以通过dbms_random生成这种分布,但是我想指定正常函数的参数(间隔,平均值,标准偏差).

是否有一种简单的方法来生成此分布,还是应该编写自己的函数?

谢谢

sql oracle random plsql normal-distribution

0
推荐指数
1
解决办法
2172
查看次数

PL/SQL:USING子句和动态变量

以下存储过程用于获取参数my_seconds,创建日期变量my_date,即当前日期加上(或减去)数字my_seconds,并打印日期.

CREATE OR REPLACE PROCEDURE test (my_seconds NUMBER)
IS    
my_date DATE;
BEGIN    
   execute immediate 'select sysdate + interval '':1'' second from dual' into my_date USING &my_seconds;
   DBMS_OUTPUT.PUT_LINE('DATE:' || my_date);  
END
Run Code Online (Sandbox Code Playgroud)

但是,当编译过程(使用Oracle SQL开发人员)时,它会提示输入my_seconds的值,并且无法正确创建过程.

该怎么做:

execute immediate 'select sysdate + interval '':1'' second from dual' into my_date USING &my_seconds ;
Run Code Online (Sandbox Code Playgroud)

被重写?

谢谢

oracle plsql

0
推荐指数
1
解决办法
350
查看次数