小编Joh*_*yle的帖子

Oracle 11g - 运行PL/SQL游标

我正在尝试在Oracle 11g上运行此代码,它在下面给出了错误.我似乎无法做对.

DECLARE
    CURSOR bookcursor IS
    SELECT btName, BookCopy.Isbn, pubName, dateDestroyed
      FROM booktitle bt
      JOIN publisher p
        ON bt.pubId = p.pubId 
      JOIN bookcopy bc
        ON bt.Isbn = bc.Isbn 
     WHERE datedestroyed IS NULL
    ;
    bookcursorrec bookcursor%ROWTYPE;
BEGIN
    OPEN bookcursor;
    LOOP
        FETCH bookcursor INTO bookcursorrer;
        EXIT WHEN bookcursor%NOTFOUND;
        dbms_output.put_line( 'ISBN: ' ||bookcursorrec.isbn
                              || ' - Book Name: ' || bookcursorrec.btname
                              || ' - Publisher: ' || bookcursorrec.pubname );
    END LOOP;
    CLOSE bookcursor;
END;


ERROR at line 3:
ORA-06550: line 3, column 20: …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql cursor oracle11g

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

从表格中找出最高值,季度

我必须在日期的帮助下从下表中检索收入最高的员工姓名,工资和相应的季度.

Table name: Emp
------------------
Empname     Salary      Date
Hunter      3260000     31aug2011
Antony      2000000     30nov2011
Mark        1800000     1dec2011
Gabriel     2300000     31oct2011
Christian   2400000     31oct2011
Gabriel     2250000     30Nov2011
Hunter      2280000     30sep2011
Run Code Online (Sandbox Code Playgroud)

请帮忙.提前致谢.

甲骨文 - 11g

sql oracle oracle11g

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

连接语法

无法获取此语句来更新表,我几乎可以肯定我的问题是串联语法.

请看看,如果你看到我在这里出错了,请告诉我..

谢谢 !!

UPDATE TAB1 s  
        SET s.user_NUM =   
             (select e.USER# 
                  from TAB2 e   
                  where ('e.LAST_NAME'||','||' E.FIRST_NAME')= s.DEALER);
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

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

为什么这个SELECT花了2-3分钟,我怎么能把它减少到几秒钟?

select to_date(checks.payment_dte, 'YYYYMMDD') as payment_date,
       checks.run_number, 
       checks.check_nbr as check_number, 
       checks.check_amt as check_amount, 
       checks.payee_no as payee_number, 
       checks.loc as location, 
       checks.fac_state as facility_state, 
       checks.delta_usa_ind, 
       checks.payee_lnme as payee_last_name, 
       checks.payee_fnme as payee_first_name, 
       checks.payee_addr1 as payee_address1, 
       checks.payee_addr2 as payee_address2, 
       checks.payee_addr3 as payee_address3, 
       checks.payee_city, 
       checks.payee_st as payee_state, 
       to_char(checks.payee_zip, '00000') as payee_zip,
       to_char(checks.payee_zip4, '0000') as payee_zip4, 
       checks.payee_country_cde as payee_country_code,
       country.country_abbreviation as payee_country_code_description, 
       checks.maint_code as maintenance_code, 
       checks.mod_dte as mod_date, 
       checks.mod_op, 
       checks.payment_profile_id, 
       checks.bank_profile_id, 
       checks.parent_id
from (select c.*, 
             check_total
      from db1.tbl_payment_checks c
      join (select sum(net) as check_total, 
                   check_nbr
            from (select …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

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

SQL orcl10g触发器插入(birthDate after birthDate)

触发器需要在输入生日之前停止死亡日期.

CREATE TRIGGER Check_deathDate
BEFORE INSERT Or UPDATE of deathDate on Actor
FOR EACH ROW
DECLARE
deathDate           DATE;
birthDate           DATE;
deathDate_Error     EXCEPTION;
IF (deathDate < birthDate) THEN
RAISE deathDate_Error;
END IF;
EXCEPTION 
WHEN deathDate_Error THEN
Raise_application_error( 'deathDate' || 'should be before' || 'birthDate');
END;);
Run Code Online (Sandbox Code Playgroud)

给出错误......

*第3行的错误:ORA-04079:触发器规范无效

...我怎么能指定IF?

sql oracle triggers oracle10g

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

标签 统计

oracle ×5

sql ×5

oracle11g ×3

plsql ×2

cursor ×1

oracle10g ×1

triggers ×1