存储过程的转换-将Oracle函数转成mysql的函数,只要语义通过就行,谢谢大家

问题描述

将Oracle函数转成mysql的函数,只要语义通过就行,谢谢大家

FUNCTION createRotationStatement(p_project IN varchar2 DEFAULT NULL,
p_whse IN varchar2 DEFAULT NULL,
p_ower IN varchar2 DEFAULT NULL,
p_outbkey IN varchar2 DEFAULT NULL,
p_rowno IN varchar2 DEFAULT NULL
)

RETURN varchar2 IS
v_orderClause varchar2(32767) := NULL;

BEGIN

r_orderRoute := getRoute(p_project, p_whse, p_ower, p_outbkey, p_rowno);

IF (r_orderRoute.e_skurotation1 IS NOT NULL) AND
   (r_orderRoute.e_rotation1 IS NOT NULL) THEN

  IF r_orderRoute.e_rotation1 = 'LIFO' THEN
    r_orderRoute.e_rotation1 := 'DESC';
  ELSE
    r_orderRoute.e_rotation1 := 'ASC';
  END IF;
  --                v_orderClause := v_orderClause||' DECODE(UPPER('''||r_orderRoute.e_skurotation1||'''),''LOT'',le.lot,le.'||r_orderRoute.e_skurotation1||') '||r_orderRoute.e_rotation1||', ';
  v_orderClause := v_orderClause || ' DECODE(UPPER(''' ||
                   r_orderRoute.e_skurotation1 || '''),''LOT'',le.lot,
        ''LOT08'',TO_CHAR(le.LOT08,''yyyy-mm-dd''),
        ''LOT09'',TO_CHAR(le.LOT09,''yyyy-mm-dd''),
        ''LOT10'',TO_CHAR(le.LOT10,''yyyy-mm-dd''),
        ''LOT16'',TO_CHAR(le.LOT16,''yyyy-mm-dd''),
        ''REC_DATE'',TO_CHAR(inv.REC_DATE,''yyyy-mm-dd''),
        le.LOT) ' || r_orderRoute.e_rotation1 || ', ';
END IF;

IF (r_orderRoute.e_skurotation2 IS NOT NULL) AND
   (r_orderRoute.e_rotation2 IS NOT NULL) THEN

  IF r_orderRoute.e_rotation2 = 'LIFO' THEN
    r_orderRoute.e_rotation2 := 'DESC';
  ELSE
    r_orderRoute.e_rotation2 := 'ASC';
  END IF;
  --                v_orderClause := v_orderClause||' DECODE(UPPER('''||r_orderRoute.e_skurotation2||'''),''LOT'',le.lot,le.'||r_orderRoute.e_skurotation2||') '||r_orderRoute.e_rotation2||', ';
  v_orderClause := v_orderClause || ' DECODE(UPPER(''' ||
                   r_orderRoute.e_skurotation2 || '''),''LOT'',le.lot,
        ''LOT08'',TO_CHAR(le.LOT08,''yyyy-mm-dd''),
        ''LOT09'',TO_CHAR(le.LOT09,''yyyy-mm-dd''),
        ''LOT10'',TO_CHAR(le.LOT10,''yyyy-mm-dd''),
        ''LOT16'',TO_CHAR(le.LOT16,''yyyy-mm-dd''),
        ''REC_DATE'',TO_CHAR(inv.REC_DATE,''yyyy-mm-dd''),
        le.LOT) ' || r_orderRoute.e_rotation2 || ', ';
END IF;

IF (r_orderRoute.e_skurotation3 IS NOT NULL) AND
   (r_orderRoute.e_rotation3 IS NOT NULL) THEN

  IF r_orderRoute.e_rotation3 = 'LIFO' THEN
    r_orderRoute.e_rotation3 := 'DESC';
  ELSE
    r_orderRoute.e_rotation3 := 'ASC';
  END IF;
  --                v_orderClause := v_orderClause||' DECODE(UPPER('''||r_orderRoute.e_skurotation3||'''),''LOT'',le.lot,le.'||r_orderRoute.e_skurotation3||') '||r_orderRoute.e_rotation3||', ';
  v_orderClause := v_orderClause || ' DECODE(UPPER(''' ||
                   r_orderRoute.e_skurotation3 || '''),''LOT'',le.lot,
        ''LOT08'',TO_CHAR(le.LOT08,''yyyy-mm-dd''),
        ''LOT09'',TO_CHAR(le.LOT09,''yyyy-mm-dd''),
        ''LOT10'',TO_CHAR(le.LOT10,''yyyy-mm-dd''),
        ''LOT16'',TO_CHAR(le.LOT16,''yyyy-mm-dd''),
        ''REC_DATE'',TO_CHAR(inv.REC_DATE,''yyyy-mm-dd''),
        le.LOT) ' || r_orderRoute.e_rotation3 || ', ';
END IF;

DBMS_OUTPUT.PUT_LINE('YYYYY:' || v_orderClause);

RETURN SUBSTR(TRIM(v_orderClause), 1, LENGTH(TRIM(v_orderClause)) - 1);

END createRotationStatement;

解决方案

Oracle与MySql函数
对比: sql函数转成oracle函数

时间: 2024-08-01 23:04:15

存储过程的转换-将Oracle函数转成mysql的函数,只要语义通过就行,谢谢大家的相关文章

这个Oracle语句转成 mysql语句怎么写 ,我每次运行都有错误

问题描述 这个Oracle语句转成 mysql语句怎么写 ,我每次运行都有错误 2C select * from (select rownum rng.*c.name cname from shop_goods gshop_category c where g.categoryid=c.id and g.categoryid=#{categoryid} and g.name like #{name} ) r where r.rn between (#{page}-1)*#{pageSize} a

spring配置ibatis oracle数据库改成mysql数据库遇到数据库方言问题

问题描述 spring配置ibatisoracle数据库改成mysql数据库遇到数据库方言问题<!--spring配置ibatis--><beanid="sqlMapClient"class="org.framework.ibatis.spring.SqlMapClientFactoryBean"><!--Mysql,Sqlserver通用ibatis配置文件-->propertyname="configLocation

oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]

oracle                                       -->                             mysql to_char(sysdate,'yyyy-mm-dd')-->date_format(sysdate(),'%Y-%m-%d');to_date(sysdate,'yyyy-mm-dd')-->STR_TO_DATE(sysdate(),'%Y-%m-%d'); 1.oracle  (1)使用TO_CHAR函数处理数字 

mysql-oracle的sql语句怎么转换成MySQL里的sql语句呢

问题描述 oracle的sql语句怎么转换成MySQL里的sql语句呢 oracle的sql语句怎么转换成MySQL里的sql语句呢 解决方案 http://jingyan.baidu.com/article/ca41422fe01f251eaf99ed6e.html试试这个经验 解决方案二: 在oracle里面拼接成MySQL的语句

MYSQL 创建函数出错的解决方案_Mysql

在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况.下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考. 案例一: 目前在项目中,执行创建mysql的函数出错, mysql 创建函数出错信息如下: Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation 首先检查创建函数的功能是否开启,检查是否开启创建功能的SQL如下: -

oracle函数和存数过程转成mysql

问题描述 oracle函数和存数过程转成mysql create or replace function public_f_get_bsc012 ( v_id in varchar2 ) return varchar2 as v_temp varchar2(200); begin select bsc012 into v_temp from sc05 where bsc010=v_id; return v_temp; exception when others then return ''; e

net-time_t转换成systemtime调用函数时有点疑问?

问题描述 time_t转换成systemtime调用函数时有点疑问? 求解释转换的定义函数 调用这里应该怎么写,这样会出现参数不匹配 解决方案 类型不匹配,你可以用Encoding.Encode.Default.GetString(字节数组)转换

oracle自定义函数如何转成mysql函数

问题描述 oracle自定义函数如何转成mysql函数 这是oracle自定义的函数,怎么把他转成mysql的 create or replace function fun_return_zjxl(in_taskId varchar2, in_work_no varchar2) return varchar2 is v_sum number(10);--质检平均完成量 v_num NUMBER(10);--质检个人完成量 v_qualitied_cnt NUMBER(10); v_result

select-asp 文件转换php实现,主要是SQLSERVER里的存储过程转换成mysql语句写不出来!

问题描述 asp 文件转换php实现,主要是SQLSERVER里的存储过程转换成mysql语句写不出来! =================存储过程======================= ALTER PROCEDURE [dbo].[CreatUser] -- Add the parameters for the stored procedure here @Username varchar(50), @userPassword varchar(50), @QQID varchar(11