环境:
系统:windwos server 2008 32位
数据库:mysql 5.1 for win32
ODBC:mysql 5.1 32位mysql自定义函数
fun1(num integer)
函数中对表做了更新操作ASP用ADO在执行"select fun1(10)"时出错同样的代码、数据库、ODBC驱动在32位win7上没有问题。求大神给招!

解决方案 »

  1.   

    Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)ODBC 驱动程序不支持所需的属性。UDF代码:
    DELIMITER $$ 
    DROP FUNCTION IF EXISTS `nextval` $$ 
    CREATE DEFINER=`root`@`localhost` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)
     BEGIN 
    UPDATE tas_sequence 
    SET current_value = current_value + increment 
    WHERE name = seq_name; 
    RETURN currval(seq_name); 
    END $$ 
    DELIMITER ; 
      

  2.   

    "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=3;"
      

  3.   

    在ASP中怎样连接MYSQL的?ADO?代码?
      

  4.   

    Set conn = server.createobject("ADODB.Connection")
    Sql="Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=3;" 
    conn.CursorLocation = 3 
    conn.open Sqlset Rs = server.createobject ("ADODB.Recordset")
    Sql = "select nextval('student_id') seq_id"
    rs.open Sql,conn,3,3 '这里报错
      

  5.   

    DELIMITER $$ 
    DROP FUNCTION IF EXISTS `currval` $$ 
    CREATE DEFINER=`root`@`localhost` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)
     BEGIN 
      DECLARE value INTEGER; 
      SET value = 0; 
      SELECT current_value INTO value 
      FROM tas_sequence 
      WHERE name = seq_name; 
      RETURN value; 
    END $$ 
    DELIMITER ; 
      

  6.   

    用你的UDF、ASP代码(修改为VBA),在ACCESS2000+MYSQL 5.5下测试(ODBC MySQL ODBC 5.2W Driver),
    没有问题,就是实现oracle中的NEXTVAL,CURRVAL,SETVAl吧。
      

  7.   

    是的。
    也奇怪我在win7上就不会出问题。可能是mysql版本和ODBC版本的问题吧。
    我回去了也用5.5+5.2wODBC去试试。