从oracle到mysql:自定义函数
不知怎样在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;
/