『壹』 LINUX下,對ORACLE資料庫腳本(比如存儲過程或是觸發器)進程編譯,用哪個命令
sqlplus里
@${filename}
showerror -- 查看編譯錯誤
『貳』 如何使用命令方式修改存儲過程的定義、
一是僅僅只調用存儲過程:如果需要排除該語句,則在要執行的語句批中,這種對存儲過程的調用需要作為批中的第一條語句。
二是使用exec命令:如果在一個批中,存儲過程的調用是第二個或後續的語句,則需要在存儲過程前使用exec語句作為前綴。如果在另一個存儲過程中調用該存儲過程,則同樣需要使用exec命令作為前綴。
『叄』 oracle 中用什麼命令執行一個帶參數的存儲過程
具體如下:
1、第一步,創建一個新的存儲過程,見下圖,轉到下面的步驟。
『肆』 什麼是存儲過程用什麼來調用
存儲過程是一個預編譯的SQL語句,優點是允許模塊化的設計,就是說只需創建一次,以後在該程序中就可以調用多次。如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。可以用一個命令對象來調用存儲過程。
『伍』 可以用dos命令調用執行plsql存儲過程嗎
要成功執行這個存儲過程,你需要注意幾點:
1.select * from ods_area; 不能直接在pl/sql 中作為語句執行。
應該用 select 欄位 into plsql變數 from 表名;
的形式來獲取表中的數據,保存到plsql變數中。
2. 存儲過程的語法格式為:
create or replace procere area
is
--變數聲明;
begin
--過程主體;
end area;
3. 如果存儲過程代碼無誤,可以通過 "/" 來執行代碼,編譯存儲過程。
4.通過exec 或 execute 來調用編譯後的存儲過程。
例如:
-- 創建procere:
create or replace procere area
is
num number ;
v_areaRecord al%ROWTYPE;
begin
--例子1
select * into v_areaRecord from al;
--例子2
select 12345 into num from al;
end area;
/
-- 通過 / 執行;
--調用
exec area;
『陸』 如何編寫存儲過程
//創建存儲過程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是傳進去的變數;
drop procere userData;//銷毀這個存儲過程。
call userData(2) //調用存儲過程。
(6)哪些命令可以編譯存儲過程擴展閱讀:
sql中的存儲過程及相關介紹:
CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數
(SQL Server 7.0以上版本),參數的使用方法如下:
@參數名數據類型[VARYING] [=內定值] [OUTPUT]。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
[內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數。
同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。
參考資料來源:網路-儲存過程
『柒』 用什麼命令可以重新編譯所有的存儲過程
這是我同事做的一個存儲過程,我們一般都用這個處理
CREATE OR REPLACE PROCEDURE OWN.P_HSJ_COMPRE
IS
CURSOR cur_invalid_obj IS
SELECT uo.object_name,uo.object_type
FROM user_objects uo,
USER_ORDER_OBJECT_BY_DEPEND uobd
WHERE uo.object_id = uobd.object_id(+) AND uo.status != 'VALID'
ORDER BY uobd.dlevel desc,uo.object_type,uo.object_name;
ls_objname VARCHAR2(100);
ls_objtype VARCHAR2(100);
ls_status VARCHAR2(20);
ls_text VARCHAR2(4000);
ls_sql varchar2(100);
BEGIN
OPEN cur_invalid_obj;
LOOP
FETCH cur_invalid_obj INTO ls_objname,ls_objtype;
EXIT WHEN cur_invalid_obj%NOTFOUND;
IF ls_objtype IN ('PACKAGE BODY', 'PACKAGE', 'FUNCTION', 'PROCEDURE','TRIGGER', 'VIEW') THEN
if ls_objtype ='VIEW' then
ls_sql :=' ALTER VIEW '||LS_OBJNAME ||' COMPILE';
execute immediate ls_sql;
else
DBMS_DDL.alter_compile(ls_objtype,NULL,ls_objname);
end if;
SELECT status INTO ls_status FROM user_objects
WHERE object_name = ls_objname AND object_type = ls_objtype;
/* IF ls_status != 'VALID' THEN
SELECT text INTO ls_text FROM user_errors
WHERE name = ls_objname AND type = ls_objtype;
END IF;
*/
END IF;
END LOOP;
CLOSE cur_invalid_obj;
EXCEPTION
WHEN OTHERS THEN
IF cur_invalid_obj%ISOPEN THEN
CLOSE cur_invalid_obj;
END IF;
END;
/
『捌』 Oracle有沒有命令可以編譯存儲過程
sqlplus有相關的了命令:比如alter procere prodere_name compile;
第一次編譯的時候只要在後面加一個/當做執行符號,那麼就可以進行編譯。