conn xiaoy" /> conn xiaoy">
Heim Datenbank MySQL-Tutorial 关于在procedure中调用dbms_lock的package

关于在procedure中调用dbms_lock的package

Jun 07, 2016 pm 04:37 PM
dbms lock procedure um 调用

开发人员创建的procedure需要调用dbms_lock的package中的对象,调用时候出现了类似下列的问题。 SQL> create or replace procedure proc01 as 2 begin 3 dbms_lock.sleep(10); 4 end; 5 / Procedure created. SQL> show user; USER is "SYS" SQL> conn xiaoy

开发人员创建的procedure需要调用dbms_lock的package中的对象,调用时候出现了类似下列的问题。<br> SQL> create or replace procedure proc01 as<br> 2 begin<br> 3 dbms_lock.sleep(10);<br> 4 end;<br> 5 /

Procedure created.

SQL> show user;
USER is "SYS"
SQL> conn xiaoyu/xiaoyu
Connected.
SQL> create or replace procedure proc01 as
2 begin
3 dbms_lock.sleep(10);
4 end;
5 /

Warning: Procedure created with compilation errors.

SQL> show errors;
Errors for PROCEDURE PROC01:

LINE/COL ERROR
-------- -----------------------------------------------------------------
3/1 PL/SQL: Statement ignored
3/1 PLS-00201: identifier 'DBMS_LOCK' must be declared
SQL> conn / as sysdba
Connected.

这里用静态sql调用dbms_lock的package时,oracle报出了无法识别该package,这里需要单独授权这个package给用户,这个需要特别注意,因为正常的匿名块程序中我们是可以调用的,但是procedure中则不行了。
SQL> grant execute on sys.dbms_lock to xiaoyu;

Grant succeeded.

SQL> conn xiaoyu/xiaoyu
Connected.
SQL> create or replace procedure proc01 as
2 begin
3 dbms_lock.sleep(10);
4 end;
5 /

Procedure created.

但是这里并不是说所有的dbms开头的package下的对象都不能在procedure或者function中调用,比如dbms_stats的package在不单独授权的情况下就能够正常调用。

SQL> create or replace procedure proc03 as
2 begin
3 dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'T_DYNAMIC01');
4 end;
5 /

Procedure created.

这里我们想想动态sql能否实现了:
SQL> revoke execute on sys.dbms_lock from xiaoyu;

Revoke succeeded.

SQL> create or replace procedure proc01 as
2 begin
3 execute immediate 'dbms_lock.sleep(10)';
4 end;
5 /

Procedure created.

SQL> exec proc01;
BEGIN proc01; END;

*
ERROR at line 1:
ORA-00900: invalid SQL statement
ORA-06512: at "SYS.PROC01", line 3
ORA-06512: at line 1

这里来看动态sql执行的时候出现了问题,oracle报出了在第三行出现了无效的语句,动态sql相比静态sql可以解决一些静态sql无法实现的问题,比如参数的不确定性造成没办法评估程序的具体操作,再比如在存储过程或者匿名块中实现ddl语句。

如下动态sql解决在procedure中实现ddl的示例:
SQL> create or replace procedure proc02 as
2 begin
3 create table t_dynamic01 as select * from dual;
4 end;
5 /

Warning: Procedure created with compilation errors.

SQL> show errors;
Errors for PROCEDURE PROC02:

LINE/COL ERROR
-------- -----------------------------------------------------------------
3/1 PLS-00103: Encountered the symbol "CREATE" when expecting one of
the following:
begin case declare exit for goto if loop mod null pragma
raise return select update while with
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe

SQL> create or replace procedure proc02 as
2 begin
3 execute immediate 'create table t_dynamic01 as select * from dual';
4 end;
5 /

Procedure created.

SQL> exec proc02;

PL/SQL procedure successfully completed.

SQL> select * from t_dynamic01;

D
-
X

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie rufe ich mit Python die Baidu Map API auf, um die Abfragefunktion für den geografischen Standort zu implementieren? Wie rufe ich mit Python die Baidu Map API auf, um die Abfragefunktion für den geografischen Standort zu implementieren? Jul 31, 2023 pm 03:01 PM

Wie rufe ich mit Python die Baidu Map API auf, um die Abfragefunktion für geografische Standorte zu implementieren? Mit der Entwicklung des Internets wird die Erfassung und Nutzung geografischer Standortinformationen immer wichtiger. Baidu Maps ist eine sehr verbreitete und praktische Kartenanwendung, die eine Vielzahl geografischer Standortabfragedienste bietet. In diesem Artikel wird erläutert, wie Sie mit Python die Baidu Map API aufrufen, um die Abfragefunktion für den geografischen Standort zu implementieren, und ein Codebeispiel anhängen. Beantragen Sie ein Baidu Map-Entwicklerkonto und eine Anwendung. Zunächst müssen Sie über ein Baidu Map-Entwicklerkonto verfügen und eine Anwendung erstellen. Einloggen

Quellcode-Erkundung: Wie werden Objekte in Python aufgerufen? Quellcode-Erkundung: Wie werden Objekte in Python aufgerufen? May 11, 2023 am 11:46 AM

Wedge Wir wissen, dass Objekte im Wesentlichen auf zwei Arten erstellt werden: zum einen über Python/CAPI und zum anderen durch den Aufruf eines Typobjekts. Bei Objekten integrierter Typen werden beispielsweise beide Methoden unterstützt. Listen können beispielsweise über [] oder list() erstellt werden, und letzteres ist ein aufrufendes Typobjekt. Aber beispielsweise Objekte benutzerdefinierter Klassen können wir nur durch den Aufruf von Typobjekten erstellen. Wenn ein Objekt aufgerufen werden kann, ist das Objekt aufrufbar, andernfalls ist es nicht aufrufbar. Ob ein Objekt aufrufbar ist, hängt davon ab, ob eine Methode im entsprechenden Typobjekt definiert ist. wie

Fähigkeiten zum Aufrufen von PHP-Kameras: So implementieren Sie die Umschaltung mehrerer Kameras Fähigkeiten zum Aufrufen von PHP-Kameras: So implementieren Sie die Umschaltung mehrerer Kameras Aug 04, 2023 pm 07:07 PM

Fähigkeiten zum Aufrufen von PHP-Kameras: So wechseln Sie zwischen mehreren Kameras. Kameraanwendungen sind zu einem wichtigen Bestandteil vieler Webanwendungen geworden, z. B. Videokonferenzen, Echtzeitüberwachung usw. In PHP können wir verschiedene Technologien nutzen, um die Kamera aufzurufen und zu bedienen. Dieser Artikel konzentriert sich auf die Implementierung der Umschaltung mehrerer Kameras und stellt einige Beispielcodes bereit, um den Lesern das Verständnis zu erleichtern. Grundlagen des Kameraaufrufs In PHP können wir die Kamera aufrufen, indem wir die JavaScript-API aufrufen. Konkret: wir

So lösen Sie externe Ressourcenzugriffe und Aufrufe in der PHP-Entwicklung So lösen Sie externe Ressourcenzugriffe und Aufrufe in der PHP-Entwicklung Oct 08, 2023 am 11:01 AM

Um das Problem des Zugriffs und Aufrufs externer Ressourcen in der PHP-Entwicklung zu lösen, sind bestimmte Codebeispiele erforderlich. Bei der PHP-Entwicklung stoßen wir häufig auf Situationen, in denen wir auf externe Ressourcen zugreifen und diese aufrufen müssen, z. B. auf API-Schnittstellen, Bibliotheken von Drittanbietern oder andere Serverressourcen . Beim Umgang mit diesen externen Ressourcen müssen wir darüber nachdenken, wie wir sicher darauf zugreifen und Anrufe tätigen und gleichzeitig Leistung und Zuverlässigkeit gewährleisten können. Dieser Artikel beschreibt mehrere gängige Lösungen und stellt entsprechende Codebeispiele bereit. 1. Verwenden Sie die Curl-Bibliothek, um externe Ressourcen aufzurufen. Curl ist eine sehr leistungsstarke Open-Source-Bibliothek.

Wie rufe ich die Baidu Map API über die Python-Programmierung auf, um die Kartenanzeigefunktion zu implementieren? Wie rufe ich die Baidu Map API über die Python-Programmierung auf, um die Kartenanzeigefunktion zu implementieren? Aug 02, 2023 pm 08:27 PM

Wie rufe ich die Baidu Map API über die Python-Programmierung auf, um die Kartenanzeigefunktion zu implementieren? Mit der rasanten Entwicklung des Internets sind Kartenanwendungen aus unserem Leben nicht mehr wegzudenken. Als eine der größten Kartenanwendungen in China stellt uns Baidu Maps eine Fülle von Diensten und API-Schnittstellen zur Verfügung, mit denen sich die Kartenanzeigefunktion problemlos realisieren lässt. In diesem Artikel wird erläutert, wie die Baidu-Karten-API mithilfe der Python-Programmierung aufgerufen wird, um die Kartenanzeigefunktion zu realisieren, und es werden entsprechende Codebeispiele angegeben. Zuerst müssen wir einen registrieren

Wie Matlab M-Dateien aufruft – Matlab-Methode zum Aufrufen von M-Dateien Wie Matlab M-Dateien aufruft – Matlab-Methode zum Aufrufen von M-Dateien Mar 04, 2024 pm 01:49 PM

Viele Freunde wissen immer noch nicht, wie man M-Dateien in Matlab aufruft, daher erklärt der Editor unten, wie man M-Dateien in Matlab aufruft. Wenn Sie es brauchen, schauen Sie es sich meiner Meinung nach an. 1. Öffnen Sie zunächst die Matlab-Software und klicken Sie in der Hauptoberfläche auf „Öffnen“, wie in der Abbildung unten gezeigt. 2. Wählen Sie dann eine M-Datei aus, die geöffnet werden muss, und wählen Sie Öffnen, wie in der Abbildung unten gezeigt. 3. Sehen Sie sich dann im Editor den Dateinamen und die Anzahl der Variablen der m-Datei an, wie in der folgenden Abbildung dargestellt. 4. Sie können den m-Dateinamen gefolgt von dem Variablenwert in Klammern in die Befehlszeile eingeben, um sie aufzurufen, wie in der Abbildung unten gezeigt. 5. Schließlich kann die m-Datei erfolgreich aufgerufen werden, wie in der folgenden Abbildung dargestellt. Das Obige ist die vollständige Beschreibung zum Aufrufen von M-Dateien in Matlab, die Ihnen der Editor zur Verfügung gestellt hat.

So rufen Sie WebService mit Java auf So rufen Sie WebService mit Java auf Dec 29, 2023 pm 02:32 PM

Die Methodenschritte zum Aufrufen von WebService mit Java erfordern spezifische Codebeispiele. Der Webdienst ist eine webbasierte Anwendungsprogrammschnittstelle, die verschiedene Funktionen über das Netzwerk bereitstellt. In der Java-Entwicklung müssen wir häufig Webdienste verwenden, um mit anderen Systemen zu interagieren. In diesem Artikel wird erläutert, wie Sie WebService mithilfe von Java aufrufen, und es werden spezifische Codebeispiele bereitgestellt. 1. WebService verstehen WebService ist ein standardisiertes Kommunikationsprotokoll im XML-Format

So verwenden Sie Lock in Java-Multithreading So verwenden Sie Lock in Java-Multithreading May 12, 2023 pm 02:46 PM

Nach Jdk1.5 gibt es unter dem Paket java.util.concurrent.locks eine Reihe von Schnittstellen und Klassen für die Thread-Synchronisierung. Wenn es um die Thread-Synchronisierung geht, denkt jeder an das synchronisierte Schlüsselwort, bei dem es sich um ein integriertes Schlüsselwort handelt In Java wird die Thread-Synchronisierung durchgeführt, aber dieses Schlüsselwort weist viele Mängel auf und ist nicht sehr praktisch und intuitiv. Daher werden wir Lock im Folgenden vergleichen und erklären. Wenn wir das synchronisierte Schlüsselwort verwenden, treten normalerweise die folgenden Probleme auf: (1) Unkontrollierbarkeit, es ist nicht möglich, Sperren nach Belieben zu sperren und freizugeben. (2) Die Effizienz ist relativ gering. Beispielsweise lesen wir derzeit zwei Dateien gleichzeitig.

See all articles