我正在寻找面向初学者的Oracle存储过程的良好资源。我尝试了Dev Shed Article和one 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的帮助!
答案 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语言参考,尽管我更喜欢上一个建议中的用例。