SAE折腾之mysql能创建函数?

1、试着创建函数
CREATE FUNCTION `getMenuTreeStr` (`sid` INT)
  RETURNS varchar(1000)
BEGIN
  DECLARE treeStr VARCHAR(1000);
  DECLARE sTempChd VARCHAR(1000);
  SET treeStr = '$';
  SET sTempChd =cast(sid as CHAR); 
  WHILE sTempChd is not null DO
    SET treeStr = concat(treeStr,',',sTempChd);
    SELECT group_concat(id) INTO sTempChd FROM st_menu where FIND_IN_SET(parentid ,sTempChd)>0;
  END WHILE;
  RETURN treeStr;
 END

执行结果:
错误
SQL 查询:

CREATE FUNCTION  `getMenuTreeStr` (

`sid` INT
) RETURNS VARCHAR( 1000 ) BEGIN DECLARE treeStr VARCHAR( 1000 ) ;

MySQL 返回:文档

#1046 - No database selected 


好吧,我加上USE app_xxxx;
再次执行:
错误
SQL 查询:

CREATE FUNCTION  `getMenuTreeStr` (

`sid` INT
) RETURNS VARCHAR( 1000 ) BEGIN DECLARE treeStr VARCHAR( 1000 ) ;

MySQL 返回:文档

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 


His ancestors.

2、本地执行没这个错,仔细看看网页,look:
操作

MySQL w.rdc.sae.sina.com.cn

MySQL 连接校对:    文档
界面

Language Info:  
主题 / 风格: 
自定义颜色: [r]
字号: 82%


phpMyAdmin

版本信息: 3.3.8.1
文档
维基 (Wiki) (外链,英文)
官方主页 (外链,英文)
[ChangeLog] [Git] [Lists]


链接表的附加功能尚未激活。要查出原因,请点击此处。
你的 PHP MySQL 库版本 5.1.61 和你的 MySQL 服务器版本 5.5.23 不同。这可能造成一些未知的问题。


3、根据版本改进后的mysql创建函数脚本
USE app_xxxx;
DELIMITER $$
CREATE FUNCTION getMenuTreeStr(slid int)
RETURNS int
  
BEGIN  
  DECLARE sTempChd VARCHAR(1000);
  SET @result = '$';
  SET sTempChd =cast(sid as CHAR); 
  WHILE sTempChd is not null DO
    SET @result = concat(@result,',',sTempChd);
    SELECT group_concat(id) INTO sTempChd FROM st_menu where FIND_IN_SET(parentid ,sTempChd)>0;
  END WHILE;
  RETURN @result;

END $$

DELIMITER;

执行结果:
错误
SQL 查询: 文档

DELIMITER $$ CREATE FUNCTION getMenuTreeStr(

slid INT
) RETURNS INT 

BEGIN DECLARE sTempChd VARCHAR( 1000 ) ;

SET @result =  '$';

SET sTempChd = CAST( sid AS CHAR ) ;

WHILE sTempChd IS NOT NULL DO SET @result = CONCAT( @result ,  ',', sTempChd ) ;

SELECT GROUP_CONCAT( id ) 
INTO sTempChd
FROM st_menu
WHERE FIND_IN_SET( parentid, sTempChd ) >0;

END WHILE;

RETURN @result ;

END $$
MySQL 返回:文档

#1044 - Access denied for user 'xxxxxx_xxxxx'@'10.%' to database 'app_xxxx' 


看到这~~~泥煤,你确定不是在逗我,没权限不早说?

猜你喜欢

转载自willxwan.iteye.com/blog/2168533
sae