`

sybase---oracle2sybase procedure

阅读更多
Oracle的存储过程

create or replace procedure PROC_GSLH_GETLINKERNAMEAREA
(
p_callerPhone	VARCHAR2,	--主叫号码
p_linkerArea	out VARCHAR2	--主叫所属地区
)
as
m_callerPhone	VARCHAR2( 20 );	--去掉前面0后的主叫号码
m_phonePrefix	VARCHAR2( 20 );	--号码前缀,用来判断主叫所属地区
begin
	--初始化数据
	p_linkerArea := 'NULL';
		
	--如果主叫前面有0,刚将0去掉
	m_callerPhone := p_callerPhone;
	if( substr( p_callerPhone, 1, 1 ) = '0' ) then
		m_callerPhone := substr( p_callerPhone, 2, length( p_callerPhone ) );
	end if;
	
	--获取联系人所属地区
	m_phonePrefix := substr( m_callerPhone, 1, 8 );	--移动号码号段((8位)
	begin
		select MM_FREE into p_linkerArea from AAA_MOBILE_MAP where MM_MOBILE = m_phonePrefix;
	exception when no_data_found then
		p_linkerArea := 'NULL';
	end;

	if( p_linkerArea = 'NULL' ) then
		m_phonePrefix := substr( m_callerPhone, 1, 7 );	--移动号码号段((7位)
		begin
			select MM_FREE into p_linkerArea from AAA_MOBILE_MAP where MM_MOBILE = m_phonePrefix;
		exception when no_data_found then
			p_linkerArea := 'NULL';
		end;
	end if;
	
	if( p_linkerArea = 'NULL' ) then
		m_phonePrefix := substr( m_callerPhone, 1, 3 );	--固话区号
		begin
			select MM_FREE into p_linkerArea from AAA_MOBILE_MAP where MM_MOBILE = m_phonePrefix;
		exception when no_data_found then
			p_linkerArea := 'NULL';
		end;
	end if;
	
	if( p_linkerArea = 'NULL' ) then
		m_phonePrefix := substr( m_callerPhone, 1, 2 );	--固话区号
		begin
			select MM_FREE into p_linkerArea from AAA_MOBILE_MAP where MM_MOBILE = m_phonePrefix;
		exception when no_data_found then
			p_linkerArea := 'NULL';
		end;
	end if;
end;
/ 


变成sybase:

CREATE PROCEDURE PROC_GSLH_GETLINKERNAMEAREA
(
  @p_callerPhone VARCHAR,  --主叫号码
  @p_linkerArea VARCHAR output  --主叫所属地区
)
as 
BEGIN

 declare @m_callerPhone	VARCHAR( 20 ),   --去掉前面0后的主叫号码
         @m_phonePrefix	VARCHAR( 20 ) --号码前缀,用来判断主叫所属地区
 --初始化数据
 select @p_linkerArea = 'NULL' 
 
 --如果主叫前面有0,刚将0去掉
 select @m_callerPhone = @p_callerPhone
 
 if SUBSTRING(@p_callerPhone,1,1) = '0'
    select @m_callerPhone = SUBSTRING(@p_callerPhone,2,CHAR_LENGTH(@p_callerPhone))
    
 --获取联系人所属地区
	select @m_phonePrefix = SUBSTRING( @m_callerPhone, 1, 8 ) --移动号码号段((8位)
	begin
        select @p_linkerArea=MM_FREE from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix
    end	
	if not exists(select MM_FREE from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix)
	
	 begin
		 select   @p_linkerArea = 'NULL'
		
	 end
	 
	 if  @p_linkerArea = 'NULL' 
	   select @m_phonePrefix = SUBSTRING( @m_callerPhone, 1, 7 ) 	--移动号码号段((7位)
	   begin
          select  @p_linkerArea=MM_FREE from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix 
       end
	  if not exists ( select MM_FREE from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix)
	   begin
	       select   @p_linkerArea = 'NULL'   
	    end
	    
	   if @p_linkerArea = 'NULL' 
	     select @m_phonePrefix = SUBSTRING( @m_callerPhone, 1, 3 )	--固话区号 
        begin
          select  @p_linkerArea=MM_FREE  from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix
        end 
	   if not exists(select MM_FREE  from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix)
	      begin
	        select  @p_linkerArea = 'NULL'
	      end  
	      
	    if  @p_linkerArea = 'NULL'
	      select @m_phonePrefix = SUBSTRING( @m_callerPhone, 1, 2 ) --固话区号 
        begin
          select @p_linkerArea=MM_FREE from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix
        end
	    if not exists(select MM_FREE from AAA_MOBILE_MAP where MM_MOBILE = @m_phonePrefix)  
	        begin
	          select   @p_linkerArea='NULL'
	        end  
end            
	   
分享到:
评论

相关推荐

    ORACLE学习

    **数据对象**:在Oracle数据库中,数据对象指的是用户创建的各种数据结构实体,包括但不限于表(Table)、视图(View)、存储过程(Stored Procedure)、触发器(Trigger)等。 - **表**:是最基本的数据组织形式,...

    sybase 15.7 sql 指南

    对于政府和军事应用,Sybase 15.7可能支持FIPS 140-2标准,确保数据加密和安全符合政府规定。 9. 链式事务和隔离级别 事务处理是保证数据一致性的重要机制。在Adaptive Server中,可以设置不同的事务隔离级别,如...

    Oracle数据库学习(一)-数据库原理及SQL.docx

    IBM的DB2是另一款强大的关系数据库,适用于多种操作系统,如OS/2、Windows和大型机。DB2 Universal Database Personal Edition和Workgroup Edition分别针对个人和多用户场景。 1.2.3. Sybase数据库 Sybase是一个...

    oracle基础知识

    - **大型数据库**:如Oracle、DB2、Sybase等,这些数据库通常用于处理非常大的数据量和复杂的事务处理需求。 ##### 1.2 Oracle认证 Oracle提供了不同级别的认证来证明个人在Oracle技术领域的专业能力: - **OCA ...

    SQLDirect v6.5 for D5-10.1 Berlin Full Source

    stored procedure support (with mutiple result sets for IBM DB2, Microsoft and Sybase SQL Server) bi-directional and unidirectional result sets cached updates record filtering support of data-aware ...

    基于oracle的网上购物系统数据库.pdf

    数据库有很多种类型,常用的有 DB2、Oracle、Sybase、SQL Server、mySQL、Access 等。每种数据库都有其优点和缺点, Oracle 以其使用方便、安全性高、功能强大和完善的企业服务系统赢得了众多用户的青睐。 ...

    sql.zip_Access和SQL_oracle

    描述指出这是一个教程,旨在教授如何使用SQL来访问和处理多种数据库系统中的数据,包括Oracle、Sybase、SQL Server、DB2以及Access。 SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。它被...

    SQLDirect_6.2.0_Full_Source

    stored procedure support (with mutiple result sets for IBM DB2, Microsoft and Sybase SQL Server) bi-directional and unidirectional result sets cached updates record filtering support of data-aware...

    DB2编程基础DB2编程基础DB2编程基础

    - 与Sybase和Oracle不同,DB2的临时表在同一个会话(session)内有效。这意味着在多线程程序中使用临时表可能会导致难以控制的问题。建议在创建临时表时使用 `WITH REPLACE` 选项,这样可以自动删除已存在的临时表,...

    DB2编程序小小技巧

    与Sybase和Oracle等数据库相比,DB2在临时表的处理上有所差异。 - **使用场景**:在多线程或多用户环境中,临时表可以用来存储临时结果集或中间计算结果。 - **注意事项**: - 会话级临时表只对当前会话有效,一旦...

    Java调用带参数的存储过程并返回集合

    2. **建立连接**:使用`DriverManager.getConnection()`方法建立到Oracle数据库的连接: ```java Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@hostname:port/service_name", "username", ...

    一些常用数据库存储过程

    CREATE OR REPLACE PROCEDURE add_numbers (num1 IN NUMBER, num2 IN NUMBER, result OUT NUMBER) AS BEGIN result := num1 + num2; END; / ``` 此存储过程接受两个输入参数`num1`和`num2`,并计算它们的和,结果...

    SQL21日自学通

    Microsoft SQL Server 65 Unleashed, 2E 524 Teach Yourself Delphi in 21 Days 524 Delphi Developer's Guide 524 Delphi Programming Unleashed 525 Essential Oracle 72 525 Developing Personal Oracle7 for ...

    DB2编程基础要点 sql 存储过程

    与Sybase和Oracle不同,DB2的临时表只在同一个会话(session)内有效。这意味着在多线程程序中使用临时表可能会带来复杂性,因为难以管理各个会话间的临时表状态。创建临时表时,推荐使用`WITH REPLACE`选项,这可以...

    JDBC连接数据库里面有各数据库的应用说明

    2. **Sybase驱动**: ```java Class.forName("com.inet.tds.TdsDriver"); ``` 用于连接Sybase数据库。 3. **Microsoft SQL Server驱动**: ```java Class.forName(...

    编程(db2)使用技巧

    与Sybase或Oracle不同,DB2的临时表在会话结束时自动删除,因此适合于存储临时数据,但不适用于跨会话的数据存储。 #### 1.3 获取当前行 在DB2中,获取当前行可以通过`FETCH FIRST`子句实现。例如: ```sql SELECT...

    DB2编程序技巧

    与Sybase和Oracle不同,DB2的临时表仅在当前会话(session)内有效,因此在多线程程序中使用临时表可能导致难以预料的并发问题。建议在创建临时表时使用`WITH REPLACE`选项,这可以在同一会话中自动替换已存在的同名...

    SQL Server 内核架构剖析

    这包括了基于IPC (Inter-Process Communication) 和 RPC (Remote Procedure Call) 的通信机制,确保数据的可靠传输、安全校验、同步异步处理等功能。 - **跨平台兼容性**:考虑到不同操作系统之间的差异,SQL ...

    DB2编程技巧与实用技术

    其次,关于临时表的使用,DB2中的临时表与Sybase和Oracle有所不同。它们只在当前会话(session)内有效,这意味着如果你的程序涉及多线程,临时表可能不是一个好的选择,因为它难以进行线程间的同步控制。创建临时表...

Global site tag (gtag.js) - Google Analytics