标签: plsql

PLSQL ORACLE中的COUNT

我以前问过这个问题,但我没有得到任何帮助.我想在给定属性的情况下获取两个不同表中的行数.这是我的代码.我没有获取条件所在的总计数,而是得到了表的整数

    create or replace PROCEDURE p1( suburb IN varchar2 ) 
    as
        person_count NUMBER;
        property_count NUMBER;
    BEGIN
        SELECT count(*) INTO person_count
        FROM person p WHERE p.suburb = suburb ;

        SELECT count(*) INTO property_count
        FROM property pp WHERE pp.suburb = suburb ;


        dbms_output.put_line('Number of People :'|| person_count);
        dbms_output.put_line('Number of property :'|| property_count);

    END;
    /
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点,以便我可以检索该SUBURB中的真实人数

来自PERSON TABLE的一些数据

       PEID FIRSTNAME       LASTNAME
    ---------- -------------------- --------------------
    STREET                   SUBURB           POST TELEPHONE
    ---------------------------------------- -------------------- ---- ------------
        30 Robert       Williams
    1/326 Coogee Bay Rd.             Coogee           2034 9665-0211

        32 …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

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

使用附加列复制表

如何编写一个PL/SQL程序:

  • 按名称将表给出的表复制到另一个给定的表中(不存在)
  • 向第二个表添加一个ts填充了当前时间戳/日期时间的新列

oracle plsql stored-procedures

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

如何在plsql中使用绑定变量?

简单的任务

variable dept_id NUMBER

DECLARE
    max_deptno NUMBER;
    dept_name departments.department_name%TYPE := 'Education';
BEGIN
    select max(department_id)
      into max_deptno
      from departments;
    :dept_id := max_deptno + 10;
    insert into departments (department_id, department_name, location_id)
      values (:dept_id, dept_name, null);
    DBMS_OUTPUT.PUT_LINE('The maximum department id is ' || max_deptno);
    DBMS_OUTPUT.PUT_LINE('Rows made by insert: ' || SQL%ROWCOUNT);
END;
Run Code Online (Sandbox Code Playgroud)

max_deptno不是NULL.为什么dept_id在赋值后为NULL?我究竟做错了什么?

脚本输出:

MAX(DEPARTMENT_ID)
------------------
               520 

Error starting at line 10 in command:
DECLARE
max_deptno NUMBER;
dept_name departments.department_name%TYPE := 'Education1';
BEGIN
select max(department_id)
into max_deptno
from departments;
:dept_id := max_deptno + 10; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql bind

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

PL-SQL中的简短测试语句?

在SQL Server中,我可以使用select语句打印出某些内容的值.

SELECT 'xyz'

SELECT GetDate()
Run Code Online (Sandbox Code Playgroud)

我可以在Oracle中做类似的事情而不添加FROM <tablename>吗?

oracle plsql

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

PL/SQL noob语法错误

我是PL/SQL的新手(不是我的意思是一个真正的菜鸟,就像今天开始学习它一样)并且一直在尝试使用TOAD IDE的一些简单的脚本但是已经变得有点困在这个.我只是尝试使用游标循环一系列记录并显示每个记录,但不断收到以下错误:

ORA-06550: line 13, column 3:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

; <an identifier> <a double-quoted delimited-identifier>
The symbol ";" was substituted for "end-of-file" to continue.
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

SET SERVEROUTPUT ON

DECLARE
    CURSOR cursor1 IS 
    SELECT TWOR_WORKS_ID
    FROM TMA_WORKS
    WHERE TWOR_ORG_REF = 9999;

BEGIN
    FOR records IN cursor1  
        LOOP
            dbms_output.put_line (records.TWOR_WORKS_ID);
        END LOOP;
END
Run Code Online (Sandbox Code Playgroud)

有人可以指出我出错的地方,因为我看到了一些例子,代码看起来和我正在尝试的相同.我猜这是一个失踪; 关闭错误消息但在哪里?

oracle toad plsql

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

SQL - for循环重复问题

只是想知道我将如何更改以下SQL,以便插入只发生在唯一的link_row实例上.因此,如果在seletc中拉回完全相同的值,我只想进行循环并第一次插入.

BEGIN   
      FOR LINK_ROW IN ( SELECT LINKTEXT, LINKURL, CORPID FROM LINKS )
      LOOP
          //Do insert here
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,我在主键违规时会出现错误,因为同一项在循环内插入两次.

提前致谢

sql oracle plsql

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

Pl/Sql选择语句?

有一个数据库表;

> == id || customer_number || account_type || balance
> == 1   - 123456          -  1              - 100
> == 2   - 123457          -  1              - 200
> == 3   - 123456          -  3              - 200
> == 4   - 123456          -  4              - 220
> == 5   - 123456          -  5              - 250
> == 6   - 123457          -  2              - 200
Run Code Online (Sandbox Code Playgroud)

如何选择至少具有{1和5}类型之一的客户?

sql oracle plsql

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

更新游标列,然后使用该值进行选择

我有一个查询这样的表的游标

CURSOR Cur IS
       SELECT Emp_No,status
        from Employee
        FOR UPDATE OF status;
Run Code Online (Sandbox Code Playgroud)

现在我想使用Emp_no从另一个表更新Employee表中的状态.完成此操作后,我需要使用此状态来调用自定义业务逻辑,而不是光标检索的原始状态.解决这个问题的最佳方式是什么?这是我写的.顺便说一句,我声明了一个名为v_status的变量

 FOR Rec IN Cur LOOP

           BEGIN

           UPDATE Employee           
SET status = (select a.status from Employee_Status  where a.Emp_No = rec.Emp_No)
           WHERE CURRENT OF Cur ;
           COMMIT;

           END;

           SELECT status INTO v_status 
           FROM  Employee
           where Emp_No = rec.Emp_No;

            IF(v_status = 'Active') THEN
                   -- Custom Business Logic
                  ELSE  
            -- Business logic

            END IF;    
END LOOP;
Run Code Online (Sandbox Code Playgroud)

什么是更好的方法来实现这一目标?

oracle plsql cursor

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

警告:使用编译错误创建的过程?

为什么这会给我错误?

CREATE OR REPLACE trigger customerLineCount
BEFORE insert on  cust_line 
for each row
when(new.cust_id > 0)
DECLARE
    lineCount number;
BEGIN
    select count (*) into lineCount
    from  (cust_line inner join  customer
    on cust_line.cust_id = customer.cust_id)
    where (customer.cust_id = :new.cust_id)

    if :new.gender = "m" and lineCount = 3 THEN
        dbms_output.put_line ('Error! User already has 3 lines');
    elseif :new.gender = "f" and lineCount = 1 THEN
        dbms_output.put_line ('Error! User already has 1 line');
    end if;
END  customerLineCount;
/
Run Code Online (Sandbox Code Playgroud)

oracle triggers plsql

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

在Oracle PL/SQL中使用dbms_output.put_line时,参数的数量或类型错误

我的命令有问题dbms_output.put_line().

我有一个变量pres_name,我想在屏幕上打印该值.因此我使用,dbms_output.put_line()但命令不接受这种类型的变量,但我发现他们使用它的所有网站dbms_output.put_line(varchar variable).但我得到这个警告:

Fehler(15,5):请-00306:Falsche Anzahl oder Typen von Argumenten in Aufruf von'PUT'

用英语讲:

调用put时参数的数量或类型错误

我使用的是Oracle sql developer.

代码:

create or replace
procedure ex10_1
(
 pr_name varchar
)
as
cursor pres is select vice_pres_name from admin_pr_vp;
begin
  open pres;
  for pr_name in pres loop
    dbms_output.put_line(pr_name);
  end loop;
end;
Run Code Online (Sandbox Code Playgroud)

ps:代码还不完美.

sql oracle plsql oracle-sqldeveloper

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