plsql查看編譯錯誤
字元轉日期也不是你那種用法啊,應該用to_date,最後改成如下這樣:
executeimmediate'>to_date(''2017-05-07'',''yyyy-mm-dd'')';
2. Oracle資料庫job,調用存儲過程,PLSQL工具執行後,沒有報錯,但是也沒有任何效果,哪位大神幫忙分析一下
SQL> create or replace procere test_jobproce as
2
3 begin
4
5 insert into test_job values(sysdate);
6
7 end test_jobproce;
8
9 /
警告: 創建的過程帶有編譯錯誤。
SQL> show errors;
PROCEDURE TEST_JOBPROCE 出現錯誤:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/1 PL/SQL: SQL Statement ignored
5/13 PL/SQL: ORA-00942: 表或視圖不存在
SQL> create table test_job (t1 date);
表已創建。
SQL> create or replace procere test_jobproce as
2
3 begin
4
5 insert into test_job values(sysdate);
6
7 end test_jobproce;
8 /
過程已創建。
SQL> declare test_job_really number;
2 begin
3 dbms_job.submit(test_job_really,'test_jobproce;',sysdate,'sysdate+1/1440')
4 commit;
5 end;
6 /
PL/SQL 過程已成功完成。
SQL> rpitn :test_job_really;
SP2-0734: 未知的命令開頭 "rpitn :tes..." - 忽略了剩餘的行。
SQL> print :test_job_really;
SP2-0552: 未聲明綁定變數 "TEST_JOB_REALLY"。
SQL> desc dba_jobs;
名稱 是否為空? 類型
----------------------------------------- -------- ---------------------------
JOB NOT NULL NUMBER
LOG_USER NOT NULL VARCHAR2(30)
PRIV_USER NOT NULL VARCHAR2(30)
SCHEMA_USER NOT NULL VARCHAR2(30)
LAST_DATE DATE
LAST_SEC VARCHAR2(8)
THIS_DATE DATE
THIS_SEC VARCHAR2(8)
NEXT_DATE NOT NULL DATE
NEXT_SEC VARCHAR2(8)
TOTAL_TIME NUMBER
BROKEN VARCHAR2(1)
INTERVAL NOT NULL VARCHAR2(200)
FAILURES NUMBER
WHAT VARCHAR2(4000)
NLS_ENV VARCHAR2(4000)
MISC_ENV RAW(32)
INSTANCE NUMBER
SQL> select job ,what from dba_jobs;
JOB
----------
WHAT
-------------------------------------------------------------------------------
4001
wwv_flow_cache.purge_sessions(p_purge_sess_older_then_hrs => 24);
4002
wwv_flow_mail.push_queue(wwv_flow_platform.get_preference('SMTP_HOST_ADDRESS'),
wv_flow_platform.get_preference('SMTP_HOST_PORT'));
3
test_jobproce;
JOB
----------
WHAT
-------------------------------------------------------------------------------
SQL> exec dbms_job.run(3);
PL/SQL 過程已成功完成。
SQL> select * from test_job
2 ;
T1
--------------
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
SQL> exec dbms_job.run(3);
PL/SQL 過程已成功完成。
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
05-3月 -14
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
05-3月 -14
SQL> exec dbms_job.run(3);
PL/SQL 過程已成功完成。
SQL> /
T1
--------------
05-3月 -14
05-3月 -14
05-3月 -14
05-3月 -14
SQL>
3. plsql裡面的編譯無效對象是什麼意思
Oracle中出現無效對象,就是因為在創建函數或存儲過程等,里邊的內容書寫不正確導致。如果要重新編譯,需要先修正錯誤,然後編譯。
工具:Oracle 10g、PL/SQL
步驟:
1、在PL/SQL中打開出現編譯錯誤的函數或存儲過程,這里以存儲過程為例。
2、右鍵點擊該存儲過程,選擇「編輯」。
3、根據錯誤提示,找到錯誤,並修改錯誤。
4、改正錯誤後,點擊左上方的「齒輪」狀按鈕。
5、運行成功後,則該存儲過程就會變為編譯成功的狀態。
4. 警告: 創建的過程帶有編譯錯誤。
1. 創建完存儲過程(在命令行),可以用showerr看具體錯誤
2. 可以在PLSQL中,輸入"全班排名", 然後俺右鍵->編輯,看到具體錯誤
3. 你的sql從from後一直到group by的分號;是多餘的,即便單獨在SQL窗口也會報錯
SQL應該改成
5. 從項目的資料庫裡面 view 出的pkg 然後再PLsql 中編譯卻直接報錯!。。別人電腦上都沒錯。。
Oracle package 包含2個部分
一部分是
create or replace package PKG_LIFE as
一部分是
CREATE OR REPLACE package body PKG_LIFE as
你第一部分的代碼復制執行了么?
下面就是一個 沒有定義 程序包, 直接去編譯 程序包主體 出錯的例子代碼.
SQL> create or replace package body pkg_helloworld as
2 PROCEDURE helloworld
3 AS
4 BEGIN
5 dbms_output.put_line('Hello World');
6 END;
7 end;
8 /
警告: 創建的包體帶有編譯錯誤。
SQL> show err
PACKAGE BODY PKG_HELLOWORLD 出現錯誤:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 PL/SQL: Compilation unit analysis terminated
1/14 PLS-00201: 必須聲明標識符 'PKG_HELLOWORLD'
1/14 PLS-00304: 如果沒有說明, 則無法編譯 'PKG_HELLOWORLD' 主體
下面就是一個 先定義 程序包, 後編譯 程序包主體 通過的例子代碼.
SQL>
SQL> create or replace package pkg_helloworld as
2 PROCEDURE helloworld ;
3 end;
4 /
程序包已創建。
SQL>
SQL> create or replace package body pkg_helloworld as
2 PROCEDURE helloworld
3 AS
4 BEGIN
5 dbms_output.put_line('Hello World');
6 END;
7 end;
8 /
程序包主體已創建。