MySQL-Front如何建立函数

来源:百度知道 编辑:UC知道 时间:2024/05/09 07:54:07
已经没分了,但仍希望各位牛人老大能为菜鸟解惑,不胜感激!
在MySQL-Front工具中如何为mysql创建函数,我已经能用这工具创建存储过程了,但不能创建函数,很多语句都试过了,还是不行。请各位指定迷津!
再次感谢!
CREATE FUNCTION Get_Hight_Dept_Id_by_cdid(@V_DEPTID int)
RETURNs int
BEGIN
DECLARE V_P_DEPT_ID int;
declare V_DEPT_ID int;

V_DEPT_ID:=V_DEPTID;
SELECT PARENT_DEPT_ID INTO V_P_DEPT_ID FROM C_DEPT_INFO_T WHERE DEPT_ID=V_DEPT_ID;

WHILE V_P_DEPT_ID<>0
LOOP
V_DEPT_ID:=V_P_DEPT_ID;
SELECT PARENT_DEPT_ID INTO V_P_DEPT_ID FROM C_DEPT_INFO_T WHERE DEPT_ID=V_DEPT_ID;
END LOOP;

RETURN V_DEPT_ID;
END;
不行
CREATE FUNCTION Get_Hight_Dept_Id_by_cdid(in v_did int)
RETURNs int
BEGIN
DECLARE V_P_DEPT_ID int;
declare V_DEPT_ID int;

V_DEPT_ID:=v_did;
SELECT PARENT_DEPT_ID INTO V_P_DEPT_ID FROM C_DEPT_INFO_T WHERE DEPT_ID=V_DEPT_ID;

WHILE V_P_DEPT_ID<>0
LOOP
V_DEPT_ID:=V_P_DEPT_ID;
SELECT PARENT_DEPT_ID INTO V_P_DEPT_ID

终于搞定了.当然这里要感谢很多的人,首当其冲的是提供mysql 5 官方中文手册chm版.chm的人。
为了不使下来初学mysql的人不再犯同样的错误,便把方法要点写下,不当之处,望各位牛人海涵指正.
首先:由于比较常用到的数据库是Oracle,所以有些地方不自然地犯了相通性的错误。
错误有3:
1、in v_did int 命名变量的方法错误,这个主要是网上资料的误导,应为v_did int;
2、V_DEPT_ID:=v_did; 错误,在mysql中无此赋值语句,不知道还有没有其他方法,暂时用的是select into的方法;
3、WHILE语句的使用错误,结构与Oracle的完全不同。
改正后基本没有问题,改后的语句为:
CREATE FUNCTION Get_Hight_Dept_Id_by_cdid(V_DEPTID int) RETURNS int
BEGIN
DECLARE V_P_DEPT_ID int;
declare V_DEPT_ID int;

select V_DEPTID into V_DEPT_ID from dual;

SELECT PARENT_DEPT_ID INTO V_P_DEPT_ID FROM C_DEPT_INFO_T WHERE DEPT_ID=V_DEPT_ID;

WHILE V_P_DEPT_ID<>0 do

select V_P_DEPT_ID into V_DEPT_ID from dual;

SELECT PARENT_DEPT_ID INTO V_P_DEPT_ID FROM C_DEPT_INFO_T WHERE DEPT_ID=V_DEPT_ID;
END WHILE;

RETURN V_DEPT_ID;
END;
最后,再次感谢大家!