今天有一段代码,先是用程序实现。

闲来无聊,又用存储过程实现了一次。

程序中实现。

        /// <summary>
/// 根据区域和用户名获取可访问的国家
/// </summary>
public DataTable GetCountry(string area,string user)
{
try
{
NHibernate.Engine.ISessionImplementor FactoryImpl = FrameWork.Repository.NHb.SessionBuilder.CreateSession().GetSessionImplementation();
OracleCommand cmd = new OracleCommand(); string strWhere1 = "1=1 ";
string strWhere2 = "1=1 "; if (!String.IsNullOrEmpty(user))
{
strWhere1 += String.Format( "and vrs.u_logname = '{0}'",user);
} if (!String.IsNullOrEmpty(area))
{
strWhere2 += String.Format("and cc.sales_area = '{0}'", area);
}
string sqlstr =String.Format( @"select distinct scg.customer_country,cc.sales_area,cc.countrye,cc.countryc
from ifce.vw_rsh_user vru,
ele_bill.sap_customer_general scg,
shipuser.countryce cc
where vru.sap_cust_no = scg.customer_number
and scg.customer_country = cc.short_e
and vru.u_loginid in
(select column_value countryId
from table(splitstr_fun((select vrs.u_loginid || ',' ||
vrs.agent_user_id
from ifce.vw_rsh_user vrs
where {0}),
',')))
and {1}", strWhere1, strWhere2); cmd.Parameters.Clear(); OracleConnection conn = (OracleConnection)FactoryImpl.Connection;
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = sqlstr;
cmd.ExecuteNonQuery(); OracleDataAdapter da = new OracleDataAdapter(cmd);
System.Data.DataSet ds = new System.Data.DataSet();
da.Fill(ds);
return ds.Tables[];
}
catch (Exception e)
{
throw new FrameWork.THrException("Fail!", e);
}
}

存储过程中实现。

  /*******************************************************/
/* 根据区域和用户名获取可访问的国家 */
/* create bby wufei 2013 11 26 */
/*******************************************************/
procedure Query_Country(p_area varchar2,
p_user varchar2,
x_cur out cur_forlog) is
strWhere1 varchar2(100);
strWhere2 varchar2(100);
sqlstr varchar2(1000);
begin strWhere1 := '1=1 ';
strWhere2 := '1=1 '; if (p_user is not null) then
strWhere1 := strWhere1 || ' and vrs.u_logname = ''''||''' || p_user || '''||''''';
end if; /* if p_area is not null then
strWhere2 := strWhere2 || 'and cc.sales_area =''' || p_area '''';
end if;*/ sqlstr:='select distinct scg.customer_country,
cc.sales_area,
cc.countrye,
cc.countryc
from ifce.vw_rsh_user vru,
ele_bill.sap_customer_general scg,
shipuser.countryce cc
where vru.sap_cust_no = scg.customer_number
and scg.customer_country = cc.short_e
and vru.u_loginid in (select column_value countryId
from table(splitstr_fun((select vrs.u_loginid || '','' ||
vrs.agent_user_id
from ifce.vw_rsh_user vrs
where ' || strWhere1 ||'),
'','')))
and '|| strWhere2 ;
dbms_output.put_line(sqlstr);
open x_cur for
sqlstr; exception
when others then
null;
end Query_Country;

其中存储过程中还是有一些亮点的,比如将将查询table化,比如splitstr_fun。

数据库编程与C#编程互译的更多相关文章

  1. R语言读入数据库的中英名词互译测试并计分脚本(考试用)

    1. 分子生物学中英文.csv,输入文件,两列,以tab键分隔的txt文本,没有列名 2. 错误的名解.csv, 如果在测试中拼写错误,会写出到这个文件,可用这个容易犯错的名词进行新的测试 3. 注意 ...

  2. SQL Server数据库的基础脚本编程

    数据库脚本的基础编程 Go批量处理语句 用于同时处理多条语句 use指定数据库或表 use master --创建数据库 go use Student --创建表(Student)表示数据库 go 创 ...

  3. python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点

    python 闯关之路四(下)(并发编程与数据库编程)   并发编程重点: 1 2 3 4 5 6 7 并发编程:线程.进程.队列.IO多路模型   操作系统工作原理介绍.线程.进程演化史.特点.区别 ...

  4. 物联网网络编程、Web编程综述

    本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真 ...

  5. RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大、最高效的方法之一。它为在分布式计算环境中运行的几乎所有应用程序提供基础。

    RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大.最高效的方法之一.它为在分布式计算环境中运行的几乎所有应用程序提供基础.本文介绍 RPC 客户机和服务器之间基本的事件流 ...

  6. 【憩园】C#并发编程之异步编程(一)

    写在前面 C#5.0中,对异步编程进行了一次革命性的重构,引入了async和await这两个关键字,使得开发人员在不需要深刻了解异步编程的底层原理,就可以写出十分优美而又代码量极少的代码.如果使用得当 ...

  7. C#复习笔记(5)--C#5:简化的异步编程(异步编程的基础知识)

    异步编程的基础知识 C#5推出的async和await关键字使异步编程从表面上来说变得简单了许多,我们只需要了解不多的知识就可以编写出有效的异步代码. 在介绍async和await之前,先介绍一些基础 ...

  8. C#并发编程之异步编程2

    C#并发编程之异步编程(二)   写在前面 前面一篇文章介绍了异步编程的基本内容,同时也简要说明了async和await的一些用法.本篇文章将对async和await这两个关键字进行深入探讨,研究其中 ...

  9. 物联网网络编程和web编程

    本文是基于嵌入式物联网研发project师的视觉对网络编程和web编程进行阐述. 对于专注J2EE后端服务开发的同学来说,这篇文章可能略微简单.可是网络编程和web编程对于绝大部分嵌入式物联网proj ...

  10. 老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分

    老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分   老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/gu ...

随机推荐

  1. ruby 格式化当前日期时间

    ruby 格式化当前日期时间 ruby 用Time类获取当前时间. t = Time.new puts t 可以看到输出的是(我现在运行的时间): Sat Jan 29 10:45:22 +0800 ...

  2. android开发获取屏幕高度和宽度

    宽度:getWindowManager().getDefaultDisplay().getWidth(); 高度:getWindowManager().getDefaultDisplay().getH ...

  3. HDU 5637 Transform 单源最短路

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5637 题意: http://bestcoder.hdu.edu.cn/contests/contes ...

  4. 【贪心】Bzoj 2457:[BeiJing2011]双端队列

    2457: [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 209  Solved: 95[Submit][Stat ...

  5. 将web应用打成war包发布到服务器

    如何将web应用打成war应用发布到服务器步骤: (1)先有一web应用"google"在C:盘下,如图: google下目录有WEB-INF文件夹(下有classes.lib.w ...

  6. 20160722noip模拟赛alexandrali

    [题目大意] 有许多木块, 叠放时, 必须正着叠放, 如图1, 左边两块为合法叠放, 右边为不合法叠放. 图1 一个方块被称为稳定的, 当且仅当其放在最底层, 或其正下方有方块且下方的这个方块的四周都 ...

  7. NHibernate 基础

    install-package nhibernate install-package nunit Customer.cs public class Customer { public virtual ...

  8. 用hibernate自动创建mysql表,添加失败org.hibernate.exception.SQLGrammarException

    今天遇到了一个很坑人的问题,从昨晚一直搞到今天早上,终于发现了,先整理下: [背景]:利用hibernate自动给mysql创建一个表,然后为表里面添加一行记录,非常的简单(当然其中还涉及到sprin ...

  9. 【WCF--初入江湖】04 WCF通信模式

    04 WCF通信模式 WCF的通信模式有三种 [1]请求响应模式: 只能是客户端调用服务器; 客户端请求并等待服务器的响应后才继续执行后续操作(异步调用除外) [2]单工模式: 只能是客户端调用服务器 ...

  10. iOS 委托和协议区别和联系

    iOS上的协议类似于C#.Java上面的接口,他是从类中抽出来的一系列方法,但方法的实现是在实现这个协议的类中,任何实现这个协议的类都需要实现协议类中的@require方法: 委托是一种设计模式,是一 ...