Logging 在日志文件中写入PLSQL
我有以下ksh test.ksh,它调用sql脚本:Logging 在日志文件中写入PLSQL,logging,plsql,ksh,Logging,Plsql,Ksh,我有以下ksh test.ksh,它调用sql脚本: sqlplus user/passwrd @testChange.sql 我的testChange.sql如下所示: spool testChange.log SET serveroutput ON; SET linesize 350; ALTER SESSION SET nls_date_format='dd/mm/yyyy hh24:mi:ss'; DECLARE nbCharAlterer NUMBER; BEGIN nb
sqlplus user/passwrd @testChange.sql
我的testChange.sql如下所示:
spool testChange.log
SET serveroutput ON;
SET linesize 350;
ALTER SESSION SET nls_date_format='dd/mm/yyyy hh24:mi:ss';
DECLARE
nbCharAlterer NUMBER;
BEGIN
nbCharAlterer:= 3;
USER.PKG_TEST_CHANGE.ALTER ( nbCharAlterer => nbCharAlterer) ;
END;
/
spool off;
exit;
create or replace package PKG_TEST_CHANGE AUTHID CURRENT_USER is
nbCharAlterer number:=3;
TYPE t_array IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
procedure alterer(nbCharAlterer in number );
end PKG_TEST_CHANGE;
create or replace package body PKG_TEST_CHANGE as
compteur PLS_INTEGER := 0;
nbCharAlterer PLS_INTEGER := 3;
nbParallel PLS_INTEGER := 8
PROCEDURE ALTER(
nbCharAlterer IN NUMBER)
IS
CURSOR SQL_TABLE IS
SELECT TABLE_OWNER,TABLE_NAME,COLUMN_NAME,TYPE,SEPARATE,PATTERN,ID FROM
ALTERE_PARAM ;
sTable sys.ALL_TAB_COLUMNS.table_name%TYPE;
sOwner sys.ALL_TAB_COLUMNS.owner%TYPE;
sColumn sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
sType sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
sPattern ALTERE_PARAM.PATTERN%TYPE;
sSeparator ALTERE_PARAM.SEPARATE%TYPE;
sId sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
nNbTable number;
BEGIN
dbms_output.put_line(' ' ||TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI')||' => Database changing');
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('Alter');
....Some code
END ALTER;
end PKG_TEST_CHANGE;
我的包裹的标题如下:
spool testChange.log
SET serveroutput ON;
SET linesize 350;
ALTER SESSION SET nls_date_format='dd/mm/yyyy hh24:mi:ss';
DECLARE
nbCharAlterer NUMBER;
BEGIN
nbCharAlterer:= 3;
USER.PKG_TEST_CHANGE.ALTER ( nbCharAlterer => nbCharAlterer) ;
END;
/
spool off;
exit;
create or replace package PKG_TEST_CHANGE AUTHID CURRENT_USER is
nbCharAlterer number:=3;
TYPE t_array IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
procedure alterer(nbCharAlterer in number );
end PKG_TEST_CHANGE;
create or replace package body PKG_TEST_CHANGE as
compteur PLS_INTEGER := 0;
nbCharAlterer PLS_INTEGER := 3;
nbParallel PLS_INTEGER := 8
PROCEDURE ALTER(
nbCharAlterer IN NUMBER)
IS
CURSOR SQL_TABLE IS
SELECT TABLE_OWNER,TABLE_NAME,COLUMN_NAME,TYPE,SEPARATE,PATTERN,ID FROM
ALTERE_PARAM ;
sTable sys.ALL_TAB_COLUMNS.table_name%TYPE;
sOwner sys.ALL_TAB_COLUMNS.owner%TYPE;
sColumn sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
sType sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
sPattern ALTERE_PARAM.PATTERN%TYPE;
sSeparator ALTERE_PARAM.SEPARATE%TYPE;
sId sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
nNbTable number;
BEGIN
dbms_output.put_line(' ' ||TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI')||' => Database changing');
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('Alter');
....Some code
END ALTER;
end PKG_TEST_CHANGE;
我的包裹正文如下:
spool testChange.log
SET serveroutput ON;
SET linesize 350;
ALTER SESSION SET nls_date_format='dd/mm/yyyy hh24:mi:ss';
DECLARE
nbCharAlterer NUMBER;
BEGIN
nbCharAlterer:= 3;
USER.PKG_TEST_CHANGE.ALTER ( nbCharAlterer => nbCharAlterer) ;
END;
/
spool off;
exit;
create or replace package PKG_TEST_CHANGE AUTHID CURRENT_USER is
nbCharAlterer number:=3;
TYPE t_array IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
procedure alterer(nbCharAlterer in number );
end PKG_TEST_CHANGE;
create or replace package body PKG_TEST_CHANGE as
compteur PLS_INTEGER := 0;
nbCharAlterer PLS_INTEGER := 3;
nbParallel PLS_INTEGER := 8
PROCEDURE ALTER(
nbCharAlterer IN NUMBER)
IS
CURSOR SQL_TABLE IS
SELECT TABLE_OWNER,TABLE_NAME,COLUMN_NAME,TYPE,SEPARATE,PATTERN,ID FROM
ALTERE_PARAM ;
sTable sys.ALL_TAB_COLUMNS.table_name%TYPE;
sOwner sys.ALL_TAB_COLUMNS.owner%TYPE;
sColumn sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
sType sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
sPattern ALTERE_PARAM.PATTERN%TYPE;
sSeparator ALTERE_PARAM.SEPARATE%TYPE;
sId sys.ALL_TAB_COLUMNS.COLUMN_NAME%TYPE;
nNbTable number;
BEGIN
dbms_output.put_line(' ' ||TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI')||' => Database changing');
DBMS_APPLICATION_INFO.SET_CLIENT_INFO('Alter');
....Some code
END ALTER;
end PKG_TEST_CHANGE;
我希望我的dbms_输出.put_行(“”)记录在日志文件中。我已按以下方式运行我的ksh:
nohup ./test.ksh > alterTest.log &
我的日志文件只有一行带有“会话已更改”。知道我的日志为什么不能正常工作吗?我正在使用Oracle 10g。调用
PKG\u TEST\u CHANGE.ALTER
与包中的过程名称不匹配(ALTER
)。但是您的包名不匹配-是pkg\u test\u change
还是pkg\u alter\u remu
?简而言之,当您发布的内容甚至无法编译,更不用说运行时,您希望我们如何找出您的代码出了什么问题?请给我们一个战斗的机会并发布一个可复制的测试用例。@APC:这些是更多的复制/粘贴错误。代码函数很好您是否尝试在上添加set echo?@KaushikNayak:否。我是否应该将其添加到调用包方法的testChange.sql中?至于“复制/粘贴错误”,您要求我们解释您的代码明显的奇怪行为。在这种情况下,细节绝对重要。发布正在使用的代码的损坏版本会增加遗漏问题关键部分的可能性。调用PKG\u TEST\u CHANGE.ALTER
与包中的过程名称不匹配(ALTER
)。但是您的包名不匹配-是pkg\u test\u change
还是pkg\u alter\u remu
?简而言之,当您发布的内容甚至无法编译,更不用说运行时,您希望我们如何找出您的代码出了什么问题?请给我们一个战斗的机会并发布一个可复制的测试用例。@APC:这些是更多的复制/粘贴错误。代码函数很好您是否尝试在
上添加set echo?@KaushikNayak:否。我是否应该将其添加到调用包方法的testChange.sql中?至于“复制/粘贴错误”,您要求我们解释您的代码明显的奇怪行为。在这种情况下,细节绝对重要。在游戏中发布代码的损坏版本会增加遗漏问题关键部分的可能性。