用DBMS_DDL包重新编译PL/SQL对象
ALTER_COMPILE过程 这个过程等价于如下语句 ALTER PROCEDURE|FUNCTION|PACKAGE [ .] COMPILE [BODY] 语法 DBMS_DDL.ALTER_COMPILE ( type VARCHAR2, schema VARCHAR2, name VARCHAR2); 参数: 现在,如果想重 编译 一个程序,Oracle首先会重 编译 被标识invali
ALTER_COMPILE过程这个过程等价于如下语句
ALTER PROCEDURE|FUNCTION|PACKAGE [
语法
DBMS_DDL.ALTER_COMPILE (
type
VARCHAR2,
schema VARCHAR2,
name
VARCHAR2);
参数:

现在,如果想重编译一个程序,Oracle首先会重编译被标识invalid的程序所依赖的所有对象.
例1:
编译MYUSER方案的ACCESS_RIGHTS过程:
DBMS_DDL.ALTER_COMPILE('PROCEDURE','MYUSER','ACCESS_RIGHTS');
例2:
差不多每个实例中,PL/SQL对象名称以大写方式存储,如果创建时指定一个双引号的对象名称,那么当编译时应指定同样的方式.
如果指定不正确,则会报以下的错误
SQL> dbms_ddl.alter_compile('PROCEDURE','MYUSER','access_rights');
BEGIN dbms_ddl.alter_compile('PROCEDURE','MYUSER','access_rights'); END;
*
ERROR at line 1:
ORA-20000: Unable to compile PROCEDURE "MYUSER"."access_rights",
insufficient privileges or does not exist
ORA-06512: at "SYS.DBMS_DDL", line 68
ORA-06512: at line 1
因此如果你创建如下的对象:
CREATE or REPLACE PROCEDURE "My_Object" IS
BEGIN
...
得使用:
DBMS_DDL.ALTER_COMPILE('PROCEDURE','MYUSER','My_Object');
也可以使用ALTER PROCEDURE
例3:
这个例子将获得所有无效的对象并且重新编译
set termout on
set serverout on
DECLARE
cursor cur_invalid_objects is
select object_name, object_type from user_objects where status='INVALID';
rec_columns cur_invalid_objects%ROWTYPE;
err_status NUMERIC;
BEGIN
dbms_output.enable(10000);
open cur_invalid_objects;
loop
fetch cur_invalid_objects into rec_columns;
EXIT WHEN cur_invalid_objects%NOTFOUND;
dbms_output.put_line
('Recompiling ' || rec_columns.object_type || '
' || rec_columns.object_name);
dbms_ddl.alter_compile(rec_columns.object_type,NULL,rec_columns.object_name);
end loop;
close cur_invalid_objects;
EXCEPTION
When others then
begin
err_status := SQLCODE;
dbms_output.put_line(' Recompilation failed : ' || SQLERRM(err_status));
if ( cur_invalid_objects%ISOPEN) then
CLOSE cur_invalid_objects;
end if;
exception when others then
null;
end;
end;
/
总结:
ALTER_COMPILE可以代替手工而自动编译对象,查找那些无效的对象从而一个一个地编译.

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

データベース技術コンテスト: Oracle と SQL の違いは何ですか?データベース分野では、Oracle と SQL Server の 2 つは非常に評判の高いリレーショナル データベース管理システムです。どちらもリレーショナル データベースのカテゴリに属しますが、両者の間には多くの違いがあります。この記事では、Oracle と SQL Server の違い、実際のアプリケーションにおけるそれらの機能と利点について詳しく説明します。まず、Oracle と SQL Server の間には構文に違いがあります。

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

Oracle と SQL の違いとアプリケーション シナリオの分析 データベース分野では、Oracle と SQL は頻繁に言及される 2 つの用語です。 Oracle はリレーショナル データベース管理システム (RDBMS) であり、SQL (StructuredQueryLanguage) はリレーショナル データベースを管理するための標準化された言語です。これらはある程度関連していますが、いくつかの大きな違いもあります。まず、定義上、Oracle は特定のデータベース管理システムであり、以下で構成されます。
