最近在学习oracle的函数定义,发现sql函数的编写可真不简单,哪怕有一点点的格式不正确都不能编译通过。但是正是因为这样就又变得有意思了。
尝试了几个例子,做一下记录,本人使用的是plsql工具
1、返回一个字符串
--创建一个函数: f_test
create or replace function f_test -- 注意无传入参数的函数不要加括号,否则会报错
return varchar2 -- 注明返回的类型
is -- 这是格式,可以是 is 或者是 as
str varchar2(30); -- 这是返回参数的变量声明
begin -- 函数体
return 'hello world';
end f_test; -- 'end + 函数名'结束
创建完函数之后,使用plsql快捷键F8进行编译,如果在函数名左上角出现小红叉表示编译不通过
代码有问题,遇到这种情况我们可以在我们编写函数的sql文件中按住ctrl + 鼠标左键点击函数名称
会出现以下错误提示
当然这样程度的提示只能告诉我们错误在哪一行,而不能知道错了什么,这时候,我们要回去函数的sql去思考错误的地方病进行修改。
修改成功后,再次编译就不出现红叉了就可以使用该函数了
现在我们来测试一下这个函数。找到这个函数,右键——> 测试,弹出测试窗口(相当于我们java里的main方法)。plsql已经帮我们初始化了一些代码。
好的,现在来编写我们的逻辑。
begin
-- Call the function
:result := f_test;
DBMS_OUTPUT.PUT_LINE(:result);
end;
编写完成后,我们来运行代码,点击‘开始调试器’
然后点击
顺便说明一下,右边四个按钮是用来调试的
运行之后会出现结果,
再点击
可以看到
好嘞,大功告成!
2、根据传入参数输出字母
create or replace function f_test(i number in)
return char
is
c char;
begin
if i = 1 then return 'a';
elsif i = 2 then return 'b'; --注意是elsif而不是elseif,少了个e
else i = 3 then return 'c';
end f_test;
3、循环,打印10次hello world
DECLARE x number;
begin
x := 0;
while x < 10 loop
DBMS_OUTPUT.PUT_LINE('hello world');
x := x+1;
end loop;
end;
初学者,不足地方大家指点一下。