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

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

程序中实现。

        /// <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. FTP操作类(支持异步)

    public delegate void DownloadProgressChangedEventHandle(string information, long currentprogress, lo ...

  2. 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    // ConsoleApplication1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> ...

  3. State of Hyperparameter Selection

    State of Hyperparameter Selection DANIEL SALTIEL VIEW NOTEBOOK Historically hyperparameter determina ...

  4. uva 12086 树状数组

    树状数组 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #i ...

  5. 安装 NoMachine(NX) client and server

    (1)Windows上直接安装nxclient-3.5.0-9.exe即可 (2)Linux上 准备linux rpms nxclient-3.5.0-7.x86_64.rpmnxnode-3.5.0 ...

  6. eclipse 开发技巧

    1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xm ...

  7. 初学tornado之MVC版helloworld

    作者:the5fire | 标签: MVC  tornado  | 发布:2012-08-06 2:41 p.m. 文接上篇,看我一个简单的helloworld,虽然觉得这个框架着实精小,但是实际开发 ...

  8. Android中JSON数据格式的简单使用

    源码: package com.wangzhu.demo; import java.io.BufferedReader; import java.io.IOException; import java ...

  9. 546C. Soldier and Cards

    题目链接 题意 两个人玩扑克,共n张牌,第一个人k1张,第二个人k2张 给定输入的牌的顺序就是出牌的顺序 每次分别比较两个人牌的第一张,牌上面数字大的赢,把这两张牌给赢的人,并且大的牌放在这个人的牌最 ...

  10. scanf()函数用法小结

    scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为:      scanf("<格式化字符串>",<地址表>); ...