从oracle到mysql:自定义函数

webcat 2005-09-14 03:54:33
不知怎样在mysql(5.0)中定义函数,请教高手!


oracle:

CREATE OR REPLACE FUNCTION GETNAME(id IN NUMBER,tablename IN VARCHAR2) RETURN VARCHAR2
AS
/*
* NAME:
* getProjectname
*
* PARAMETER:
* id - 主键
*
*
* RETURN:
* out_name - 返回编号和名称
*
* AUTHOR:
* 王新雯
*
*
*/
out_name VARCHAR2(300);

BEGIN

IF tablename = 'PROJECT' THEN
SELECT projectname INTO out_name FROM PROJECT WHERE PROJECTID= id; --项目

END IF;

IF tablename = 'WORK' THEN

SELECT WORKNAME INTO out_name FROM WORK WHERE WORKID =id ; --工程

END IF;
IF tablename = 'CHILDWORK' THEN

SELECT CHILDWORKNAME INTO out_name FROM CHILDWORK WHERE CHILDWORKID= id ;--单向工程

END IF;
IF tablename = 'ADDRESS' THEN

SELECT CALIAS INTO out_name FROM ADDRESS WHERE CONID=id ;--客商地址

END IF;
IF tablename = 'DEPARTMENT' THEN

SELECT DEPARTMENTNAME INTO out_name FROM DEPARTMENT WHERE DEPARTMENTID=id ;--部门

END IF;
IF tablename = 'VEHICLE' THEN

SELECT VEHICLEMARK INTO out_name FROM VEHICLE WHERE VEHICLEID= id ;--车辆

END IF;
IF tablename = 'SUBJECT' THEN

SELECT '('||SUBJECTCODE||')'||SUBJECTNAME INTO out_name FROM SUBJECT WHERE SUBJECTID= id ;--科目

END IF;
IF tablename = 'PERSONNEL' THEN

SELECT PERSONNELNAME INTO out_name FROM PERSONNEL WHERE PERSONNELID= id ;--人员

END IF;
IF tablename = 'BALANCEMODE' THEN

SELECT BALANCENAME INTO out_name FROM BALANCEMODE WHERE BALANCEID= id ;--结算方式

END IF;

IF out_name = NULL THEN
out_name := '';
END IF;


RETURN(out_name);
END;
/
...全文
105 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧