天天看點

由于字元集問題導緻 Package Body created with compilation errors.

将要在生産庫上進行包的預釋出,時遇到如下情況:Warning: Package Body created with compilation errors.整個過程如下:

首先檢查對象的有效個數和無效的個數。

IM@im1>select object_type,status,count(*) from user_objects group by object_type,status;

OBJECT_TYPE        STATUS    COUNT(*)

------------------ ------- ----------

TYPE               VALID           11

VIEW               INVALID          3

INDEX              VALID          399

TABLE              VALID          234

PACKAGE            VALID           49

SYNONYM            VALID           10

FUNCTION           VALID            1

SEQUENCE           VALID          173

PROCEDURE          VALID           22

PACKAGE BODY       VALID           49

DATABASE LINK      VALID            6

INDEX PARTITION    VALID           79

TABLE PARTITION    VALID           79

13 rows selected.

釋出是遇到如下錯誤:

IM@im1>@/tmp/IM_SMS_20110727.pkg

Package created.

Warning:<b> Package Body created with compilation errors.</b>

<b>show error 檢查,無結果顯示。考慮不是文法的問題。</b>

IM@im1&gt;show error

No errors.

檢查對象的有效個數:

PACKAGE BODY       VALID           48

PACKAGE BODY       INVALID          1  --多一個無效對象

14 rows selected.

<b>測試庫的字元集為NLS_CHARACTERSET= AL32UTF8,而編輯的腳本的windows平台是ANSI,導緻對中文的不相容。</b>

<b>解決辦法是測試環境的NLS_LANG為"AMERICAN_AMERICA.US7ASCII",重新執行包的釋出。</b>

IM@im1&gt;select * from nls_database_parameters;

PARAMETER               VALUE

-------------          ------------

NLS_NCHAR_CHARACTERSET AL16UTF16

NLS_LANGUAGE           AMERICAN

NLS_TERRITORY          AMERICA

NLS_CURRENCY           $ 

NLS_ISO_CURRENCY       AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_CHARACTERSET       AL32UTF8

NLS_CALENDAR           GREGORIAN

NLS_DATE_FORMAT        DD-MON-RR

NLS_DATE_LANGUAGE      AMERICAN

NLS_SORT               BINARY

NLS_TIME_FORMAT        HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT   DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT     HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY      $

NLS_COMP               BINARY

NLS_LENGTH_SEMANTICS   BYTE

NLS_NCHAR_CONV_EXCP    FALSE

NLS_RDBMS_VERSION      9.2.0.8.0

20 rows selected.

IM@im1&gt;exit

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.8.0 - Production

oracle@c9e016r3ectk1xl67j8p:aliuid /tmp&gt;export|grep LANG

declare -x LANG="en_US.UTF-8"

declare -x NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

oracle@c9e016r3ectk1xl67j8p:/tmp&gt;

oracle@c9e016r3ectk1xl67j8p: /tmp&gt;export <b>NLS_LANG="AMERICAN_AMERICA.US7ASCII"</b>

oracle@c9e016r3ectk1xl67j8p: /tmp&gt;

oracle@c9e016r3ectk1xl67j8p: /tmp&gt;<b>export|grep LANG</b>

<b>declare -x LANG="en_US.UTF-8"</b>

<b>declare -x NLS_LANG="AMERICAN_AMERICA.US7ASCII"</b>

<b>再次執行包的變更,程式正确執行。</b>

oracle@c9e016r3ectk1xl67j8p: /tmp&gt;sqlplus IM   

SQL*Plus: Release 9.2.0.8.0 - Production on Fri Jul 29 04:01:29 2011

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Enter password: 

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production

IM@im1&gt;<b>@/tmp/IM_SMS_20110727.pkg</b>

<b>Package created.</b>

<b>Package body created.</b>

IM@im1&gt;<b>@/tmp/IM_WEB_ONLIE_20110727.pkg</b>

問題解決。。