1

我正在寻找面向初学者的有关 Oracle 存储过程的良好资源。我尝试了Dev Shed 文章Oracle 文档站点中的一篇文章,但它们不能满足我的需求。一种形式的 Oracle 文档站点具有 Java 示例的开销。我尝试了 Dev Shed 之一,但是当我尝试他们的示例时,我不断收到无效的 SQL 错误。这是我尝试运行的基本程序:

CREATE OR REPLACE PROCEDURE skeleton
IS
BEGIN
 NULL;
END;

EXECUTE skeleton;

我犯了一个菜鸟错误还是文章中的语法已经过时了?我正在使用 Oracle 10g 和 PL/SQL Developer。

谢谢!

解决方案:

根据@curtisk 的建议,我尝试了一个稍微复杂的示例:

CREATE OR REPLACE PROCEDURE p_getdate
IS
BEGIN
 dbms_output.put_line(TO_CHAR
    (SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
END;

当我尝试像这样执行它时:

EXECUTE p_getdate

我得到 ORA-00900: Invalid SQL statement 错误。我寻找为什么会这样并偶然发现了这个线程。我决定试一试,所以我尝试了以下方法:

CALL p_getdate;

但这也不起作用。我阅读了更多内容并怀疑地尝试了:

CALL p_getdate();

瞧,我的程序被正确调用了。我不知道为什么它会起作用,但它起作用的事实让我可以继续我的项目。如果有人可以向我解释这是为什么,我很想了解更多。

再次感谢@curtisk 的帮助!

4

2 回答 2

1

我不会用那个例子作为起点......我会让它做一些事情,这是一个尝试

CREATE OR REPLACE PROCEDURE p_getdate
IS
BEGIN
 dbms_output.put_line(TO_CHAR
    (SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
END;

运行它,它应该编译成功,然后在提示符下......

SQL> SET SERVEROUT ON;
SQL> execute p_getdate;
 06-11-2009 12:29:54

您应该在输出中看到当前日期/时间。您使用的示例太简单了恕我直言。下一步是创建一个处理声明和参数的过程。

至于初学者资源,那里有很多不能真正推荐任何一个,如果没有的话,总是“问汤姆” ..应该有一些 Q/A 可能会有所帮助

于 2009-06-11T16:31:19.627 回答
0

最好的选择是 Steve Feurenstein 和 Bill Prybil 的 Oracle PLSQL Programming 等书。这有大量的例子,大约 1300 页。

如果您只需要参考,您可以尝试这个 url 到 oracle 12c plsql 语言参考,尽管我更喜欢上一个建议中的用例。

http://docs.oracle.com/database/122/LNPLS/toc.htm

于 2017-10-03T18:20:40.460 回答