mysql实现函数,能够根据权利人的编号查出权利人的名称

本文介绍如何使用 Oracle PL/SQL 创建并调用实用函数,包括查询权利人名称、判断权利人是否存在、获取证号及查找更新时间早于指定时间的权利人名称等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--函数 
函数就是一个有返回值的过程     
--定义一个函数,这个函数能够根据权利人的编号查出权利人的名称
CREATE OR REPLACE FUNCTION MYFUN(YBSM QLR.BSM%TYPE) RETURN VARCHAR2
AS 
RSAL VARCHAR2(255);
BEGIN 
SELECT QLRMC INTO RSAL FROM QLR WHERE YBSM=BSM;
RETURN RSAL;
END;
/
--调用此函数
SELECT MYFUN(7217963) FROM DUAL ;


--输入一个BSM,判断该BSM在不在权利人表中,存在返回1,不存在返回0 
CREATE OR REPLACE FUNCTION CZ_FUN(YBSM QLR.BSM%TYPE) RETURN NUMBER
AS
IS_EXIST NUMBER;
BEGIN
SELECT COUNT(9) INTO IS_EXIST FROM QLR WHERE YBSM=BSM;
RETURN IS_EXIST;
END;
/
--调用此函数
SELECT CZ_FUN(123) FROM DUAL;
SELECT CZ_FUN(7217963) FROM DUAL;


--写一个函数,传入权利人标识码,返回证号
CREATE OR REPLACE FUNCTION ZH_FUN(YBSM QLR.BSM%TYPE) RETURN VARCHAR2
AS
ZH VARCHAR2(255);
BEGIN
SELECT B.BDCQZH INTO ZH FROM QLR A,DJFZ_CQZS B WHERE YBSM=A.BSM AND A.QLBSM=B.QLBSM /*AND ROWNUM=1*/;
RETURN ZH;
END;
/
--调用此函数
SELECT ZH_FUN(7217963) FROM DUAL;
--报错:实际返回的行数超出请求的行数
原因:select into是隐式游标,只能传一个内容进去
当加上rownum=1,就是选取了第一行,也就是说只是一行,肯定不会有其他相异的内容。
但是如果就是想要返回多行记录。那这样的话该怎么改呢?
那就只能用oracle pl/sql游标了,但是只能一条一条的处理,不要加函数传出值,需用存储过程。


--写一个函数,传入时间,返回更新时间比这个时间早的权利人名称
CREATE OR REPLACE FUNCTION SJ_FUN(YGXSJ QLR.GXSJ%TYPE) RETURN VARCHAR2
AS
MC VARCHAR2(255);
BEGIN 
SELECT QLRMC INTO MC FROM QLR WHERE YGXSJ>QLR.GXSJ AND ROWNUM=1;
RETURN MC;
END;
/
--调用函数
SELECT SJ_FUN(TO_DATE('2017/07/24','yyyy/mm/dd')) FROM DUAL;
SELECT SJ_FUN(TO_DATE('2017/7/10 15:57:45','yyyy/mm/dd hh24:mi:ss')) FROM DUAL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值