转换MYSQL语法,转换错误函数如下:
CREATE  Function  GetSatOrSunDay
  (Types int,
   SDates varchar(10),
   Edates varchar(10))
Returns int
begin
  declare TmpDays int;
  select (case DAYOFWEEK('2009-02-28') When 7 then 1 else 0  end + 
            IF(((datediff('2009-08-31', '2008-02-22')/7) - (datediff('2009-08-31', '2008-02-22') div 7)) > 0, 
              datediff('2009-08-31', '2008-02-22') div 7 + 1,  datediff('2009-08-31', '2008-02-22') div 7)) as tempfield 
    FROM tempdata INTO TmpDays;
  return(TmpDays);
end; SQL Server视图转MYSQL视图,附上SQL Server视图如下,那位好心人帮我转一下:
CREATE VIEW V_PatrolWork_Line_Dot
AS
SELECT PatrolWork.WorkID, PatrolLine.LineID, PatrolLine_Dot.DcuID, 
      PatrolLine_Dot.DoorAddr
FROM PatrolWork INNER JOIN
      PatrolLine_Dot INNER JOIN
      PatrolLine ON PatrolLine_Dot.Line_id = PatrolLine.LineID INNER JOIN
      PatrolDot ON PatrolLine_Dot.DcuID = PatrolDot.DcuID AND 
      PatrolLine_Dot.DoorAddr = PatrolDot.DoorAddr ON ----MYSQL中这里的ON认不到
      PatrolWork.Line_ID = PatrolLine.LineID 

解决方案 »

  1.   

    CREATE VIEW V_PatrolWork_Line_Dot
    AS
    SELECT PatrolWork.WorkID, PatrolLine.LineID, PatrolLine_Dot.DcuID,
          PatrolLine_Dot.DoorAddr
    FROM PatrolWork INNER JOIN PatrolLine_Dot ON PatrolWork.Line_ID = PatrolLine.LineID 
    INNER JOIN  PatrolLine ON PatrolLine_Dot.Line_id = PatrolLine.LineID 
    INNER JOIN  PatrolDot ON PatrolLine_Dot.DcuID = PatrolDot.DcuID AND
          PatrolLine_Dot.DoorAddr = PatrolDot.DoorAddr 
      

  2.   

    1.转换MYSQL语法,转换错误函数如下:
    错误提示: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 'return(TmpDays); end' at line 1
     
    CREATE  Function  GetSatOrSunDay 
      (Types int, 
      SDates varchar(10), 
      Edates varchar(10)) 
    Returns int 
    begin 
      declare TmpDays int; 
      select (case DAYOFWEEK('2009-02-28') When 7 then 1 else 0  end + 
                IF(((datediff('2009-08-31', '2008-02-22')/7) - (datediff('2009-08-31', '2008-02-22') div 7)) > 0, 
                  datediff('2009-08-31', '2008-02-22') div 7 + 1,  datediff('2009-08-31', '2008-02-22') div 7)) as tempfield 
        FROM tempdata INTO TmpDays; 
      return(TmpDays); 
    end; 2.SQL Server视图转MYSQL视图,附上SQL Server视图如下,那位好心人帮我转一下:
    错误提示: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 'ON PatrolWork.Line_ID = PatrolLine.LineID show WARNINGS' at line 9
     
    CREATE VIEW V_PatrolWork_Line_Dot 
    AS 
    SELECT PatrolWork.WorkID, PatrolLine.LineID, PatrolLine_Dot.DcuID, 
          PatrolLine_Dot.DoorAddr 
    FROM PatrolWork INNER JOIN 
          PatrolLine_Dot INNER JOIN 
          PatrolLine ON PatrolLine_Dot.Line_id = PatrolLine.LineID INNER JOIN 
          PatrolDot ON PatrolLine_Dot.DcuID = PatrolDot.DcuID AND 
          PatrolLine_Dot.DoorAddr = PatrolDot.DoorAddr ON
          PatrolWork.Line_ID = PatrolLine.LineID3.触发器--错误提示-->"Not allowed to set autocommit from a stored function or trigger"
    CREATE DEFINER='root'@`localhost` TRIGGER `PatrolLineInsertA` AFTER INSERT ON `PatrolLine`
    FOR EACH ROW 
    BEGIN
      SET AUTOCOMMIT = 0;
      START TRANSACTION;
      if not Exists(Select LineGroupID From PatrolLineGroup Where LineGroupID = NEW.LineGroup_ID)  THEN
        rollback work;
      else
        commit;
      END IF;
    END;  
      

  3.   

    2.
    错误提示: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 'ON  PatrolLine.LineID = PatrolDay.Line_ID AND  PatrolLine_Dot.Line' at line 16SELECT PatrolDay.PatrolerNo, PatrolDay.EvtTime, PatrolDay.DueTime, 
          PatrolDay.FactTime, PatrolDay.ErrorMinute, PatrolDay.Flag, 
          PatrolDay.Work_ID, PatrolDay.ID, PatrolLine.LineName, 
          PatrolType.TypeName, PatrolLine_Dot.LineDotID, PatrolLine.LineID, 
          USERS.UserName, DOOR.DoorName, PatrolDot.DcuID, 
          PatrolDot.DoorAddr, USERS.Dept_ID AS DeptID, DEPT.DeptName
    FROM PatrolLine_Dot INNER JOIN
          PatrolLine ON 
          PatrolLine_Dot.Line_id = PatrolLine.LineID LEFT OUTER JOIN
          PatrolDot ON PatrolLine_Dot.DcuID = PatrolDot.DcuID AND 
          PatrolLine_Dot.DoorAddr = PatrolDot.DoorAddr RIGHT OUTER JOIN
          PatrolType INNER JOIN
          USERS INNER JOIN
          PatrolDay ON USERS.UserNo = PatrolDay.PatrolerNo ON 
          PatrolType.ID = PatrolDay.Flag INNER JOIN
          DEPT ON USERS.Dept_ID = DEPT.ID ON 
          PatrolLine.LineID = PatrolDay.Line_ID AND 
          PatrolLine_Dot.LineDotID = PatrolDay.LineDot_ID LEFT OUTER JOIN
          DOOR ON PatrolDot.DcuID = DOOR.DcuID AND 
          PatrolDot.DoorAddr = DOOR.DoorAddr
      

  4.   

    再试一下。建议参考一下mySQL的语法。http://dev.mysql.com/doc/refman/5.1/zh/index.html1.
    CREATE  Function  GetSatOrSunDay 
    (Types int, 
    SDates varchar(10), 
    Edates varchar(10)) 
    Returns int 
    begin 
    declare TmpDays int; 
    select (case DAYOFWEEK('2009-02-28') When 7 then 1 else 0  end + 
    IF(((datediff('2009-08-31', '2008-02-22')/7) - (datediff('2009-08-31', '2008-02-22') div 7)) > 0, 
    datediff('2009-08-31', '2008-02-22') div 7 + 1,  datediff('2009-08-31', '2008-02-22') div 7)) as tempfield 
    FROM tempdata INTO TmpDays; 
    return TmpDays;    #-- changed by ACMAIN, please refer to the mySQL syntax
    end; 
      

  5.   

    2。CREATE VIEW V_PatrolWork_Line_Dot 
    AS 
    SELECT PatrolWork.WorkID, PatrolLine.LineID, PatrolLine_Dot.DcuID, 
          PatrolLine_Dot.DoorAddr 
    from ((PatrolLine_Dot INNER JOIN 
          PatrolLine PatrolLine_Dot.Line_id = PatrolLine.LineID )
          INNER JOIN PatrolDot ON PatrolLine_Dot.DcuID = PatrolDot.DcuID)
          INNER JOIN PatrolWork ON PatrolWork.Line_ID = PatrolLine.LineID 
      

  6.   

    3。CREATE DEFINER='root'@`localhost` TRIGGER `PatrolLineInsertA` AFTER INSERT ON `PatrolLine` 
    FOR EACH ROW 
    BEGIN 
      START TRANSACTION; 
      if not Exists(Select LineGroupID From PatrolLineGroup Where LineGroupID = NEW.LineGroup_ID)  THEN 
        rollback work; 
      else 
        commit; 
      END IF; 
    END;  
      

  7.   

    to ACMAIN_CHM 
       那个手册里内容我看过了,讲的太简单了,还有就是问题1, 2, 3都没有解决继续
      

  8.   

    2
    CREATE VIEW V_PatrolWork_Line_Dot
    AS
    SELECT PatrolWork.WorkID, PatrolLine.LineID, PatrolLine_Dot.DcuID,
          PatrolLine_Dot.DoorAddr
    FROM PatrolWork INNER JOIN PatrolLine_Dot ON PatrolWork.Line_ID = PatrolLine.LineID
    INNER JOIN  PatrolLine ON PatrolLine_Dot.Line_id = PatrolLine.LineID
    INNER JOIN  PatrolDot ON PatrolLine_Dot.DcuID = PatrolDot.DcuID AND
          PatrolLine_Dot.DoorAddr = PatrolDot.DoorAddr 
      

  9.   

    1
    DELIMITER $$DROP FUNCTION IF EXISTS `test`.`GetSatOrSunDay`$$CREATE DEFINER=`root`@`localhost` FUNCTION `GetSatOrSunDay`(Types int, 
        SDates varchar(10), 
        Edates varchar(10)) RETURNS int(11)
    begin 
          select (case DAYOFWEEK('2009-02-28') When 7 then 1 else 0  end + 
            IF(((datediff('2009-08-31', '2008-02-22')/7) - (datediff('2009-08-31', '2008-02-22') div 7)) > 0, 
            datediff('2009-08-31', '2008-02-22') div 7 + 1,  datediff('2009-08-31', '2008-02-22') div 7)) as tempfield 
            INTO @TmpDays
            FROM tempdata ; 
        return @TmpDays;    
        END$$DELIMITER ;
      

  10.   

    3
    MYSQL似乎不支持在触发器中回滚