ホームページ データベース mysql チュートリアル 用DBMS_DDL包重新编译PL/SQL对象

用DBMS_DDL包重新编译PL/SQL对象

Jun 07, 2016 pm 03:15 PM
dbms ddl 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 [.] COMPILE [BODY]

语法

DBMS_DDL.ALTER_COMPILE (

type

VARCHAR2,

schema VARCHAR2,

name

VARCHAR2);

参数:

用DBMS_DDL包重新编译PL/SQL对象


现在,如果想重编译一个程序,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 COMPILE命令来编译对象,用DBMS_DDL包最大的优势在于可以在以后的程序或PL/SQL中编译,这将拥有完全的灵活性以创建强有力的使用价值(请参照如下例子)

例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可以代替手工而自动编译对象,查找那些无效的对象从而一个一个地编译.
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Apr 17, 2024 pm 02:57 PM

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

Oracle SQLでの除算演算の使用法 Oracle SQLでの除算演算の使用法 Mar 10, 2024 pm 03:06 PM

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

Oracle と DB2 の SQL 構文の比較と相違点 Oracle と DB2 の SQL 構文の比較と相違点 Mar 11, 2024 pm 12:09 PM

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

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

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

SQL の 5120 エラーを解決する方法 SQL の 5120 エラーを解決する方法 Mar 06, 2024 pm 04:33 PM

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

データベース技術コンテスト: Oracle と SQL の違いは何ですか? データベース技術コンテスト: Oracle と SQL の違いは何ですか? Mar 09, 2024 am 08:30 AM

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

MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? Apr 29, 2024 pm 01:09 PM

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

OracleとSQLの違いとアプリケーションシナリオの分析 OracleとSQLの違いとアプリケーションシナリオの分析 Mar 08, 2024 pm 09:39 PM

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

See all articles