开始使用Oracle存储过程的初学者资源很好

时间:2009-06-11 14:54:18

标签: sql oracle stored-procedures oracle10g ora-00900

我正在寻找面向初学者的Oracle存储过程的良好资源。我尝试了Dev Shed Articleone from Oracle Documentation site,但他们没有满足我的需求。 Oracle Documentation站点的一个表单具有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:无效的SQL语句错误。我找了为什么会出现这种情况&偶然发现了this thread。我决定试一试,所以我尝试了以下内容:

CALL p_getdate;

但这并没有奏效。我更多地阅读了这篇文章。持怀疑态度的尝试:

CALL p_getdate();

瞧,我的程序被正确调用了。我没有回答为什么这有效,但它的工作原理让我可以继续我的项目。如果有人可以向我解释为什么会这样,我很乐意在此了解更多。

再次感谢@curtisk的帮助!

2 个答案:

答案 0 :(得分: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

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

就初学者资源而言,there's a ton out there不能特别推荐任何一个,如果没有什么总是"Ask Tom" ..应该有一些可能有帮助的问答

答案 1 :(得分:0)

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

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

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