sql函数 初学者
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql函数 初学者相关的知识,希望对你有一定的参考价值。
请问nvl()这个函数 在什么情况下使用它?它的意义是若第一个值为空,则返回值为第二个。是什么意思?
如from..where nvl(a.dr,o)=0 什么意思》?
谢谢
另decode()函数 在什么情况下使用?
若是nvl(a,b)意思是若a为null,则为b
如果是nvl(a,b,c)意思是若a为null则为b,否则为c
where nvl(a.dr,0)=0 其实就是 where a.dr is null
decode函数是oracle特有的,具体用法可以百度一下 参考技术A decode(expr,search1,result[,search2,result2,...][,default]):用于返回匹配于特定表达式的结果.
如果serach1匹配于expr,则返回result1;如果search2匹配于expr,则返回result2,以次类推;如果没有任何匹配的关系,则返回default. 参考技术B 这些你都可以百度出来的。。。
带输入参数的 Oracle PL/SQL 函数
【中文标题】带输入参数的 Oracle PL/SQL 函数【英文标题】:Oracle PL/SQL function with input parameter 【发布时间】:2019-12-13 09:48:50 【问题描述】:我是 PL/SQL 的初学者。我创建了反转字符串的函数,它改变字符串中的每 3 个字符。我在一些帮助下创建了这个函数。现在我需要删除这个'abcdeFgh'
并设置函数,这样我就有了输入参数。我该怎么做?
CREATE OR REPLACE FUNCTION RIS.tmp_tzk1_f_preslozi_string
RETURN string
IS
str VARCHAR2(20) := 'abcdeFgh';
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
len := LENGTH(str);
FOR i IN REVERSE 1..len
LOOP
brojac_svako_trece := brojac_svako_trece +1;
znak := SUBSTR (str, i, 1);
IF MOD(brojac_svako_trece,3) = 0 THEN
brojac_svako_trece := 0;
IF ASCII(znak)<97 THEN
znak := LOWER(znak);
ELSE
znak := UPPER(znak);
END IF;
END IF;
str1 := str1 || znak;
END LOOP;
RETURN str1;
dbms_output.put_line(str1);
END;
DECLARE
RetVal VARCHAR2 (32767);
BEGIN
RetVal := RIS.TMP_TZK1_F_PRESLOZI_STRING;
dbms_output.put_line(RetVal);
END;
【问题讨论】:
【参考方案1】:这应该可以完成您非常接近的工作。
CREATE OR REPLACE FUNCTION tmp_tzk1_f_preslozi_string (str IN VARCHAR)
RETURN string
IS
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
len := LENGTH(str);
FOR i IN REVERSE 1..len
LOOP
brojac_svako_trece := brojac_svako_trece +1;
znak := SUBSTR (str, i, 1);
IF MOD(brojac_svako_trece,3) = 0 THEN
brojac_svako_trece := 0;
IF ASCII(znak)<97 THEN
znak := LOWER(znak);
ELSE
znak := UPPER(znak);
END IF;
END IF;
str1 := str1 || znak;
END LOOP;
RETURN str1;
END;
DECLARE
RetVal VARCHAR2 (32767);
BEGIN
RetVal := TMP_TZK1_F_PRESLOZI_STRING('DobarDan');
dbms_output.put_line(RetVal);
END;
【讨论】:
【参考方案2】:其实很简单:
CREATE OR REPLACE FUNCTION RIS.tmp_tzk1_f_preslozi_string(
str IN VARCHAR2 --> add input params here
) RETURN string
IS
znak CHAR := '';
len NUMBER;
brojac_svako_trece INTEGER := 0;
str1 VARCHAR(20) := '';
BEGIN
-- your code goes here
END;
【讨论】:
以上是关于sql函数 初学者的主要内容,如果未能解决你的问题,请参考以下文章
Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器