50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

在.NET 语言中封装存储过程

  • 2009-06-04
  • 本文字数:964 字

    阅读完需:约 3 分钟

在.NET 中针对已有的存储过程创建封装函数是相当困难的一件事。存储过程有特定的调用约定,这些约定在.NET Framework 中并不常用。它们包含以下内容:

  • Pass by Reference Parameters
  • Output Parameters
  • Optional Parameters with default values
  • All parameters are nullable
  • 用引用参数传递值
  • 输出参数
  • 带默认值的可选参数
  • 所有参数都是可空的

目前为止,完全映射并不可行。C#当前并不支持可选参数,只是针对所缺的参数使用占位符。VB 能够处理可选参数,但不能处理那些为空值的参数。例如,你不可以这样编写代码:

复制代码
<span>Function </span>FindCustomer(<span>Optional ByVal </span>firstName <span>As String </span>= <span>Nothing</span>, _
<span>Optional ByVal </span>lastName <span>As String </span>= <span>Nothing</span>, _
<span>Optional ByVal </span>zipCode <span>As Integer</span>? = <span>Nothing</span>) <span>As </span>DataTable

在调用带有多个可选参数的搜索式存储过程时,这是一个需要重点关注的问题。使用 C# 4 和 VB 10,最后的漏洞已经解决。C#现在支持可选值,两种语言在和可空结构打交道的时候,都可以使用可选类型。

特性

C#

映射

VB

映射

F#

映射

用引用参数传递值

1

ref type [param]

7

ByRef [param] As [type]

4

[param] : [type] byref

输出类型

1

out type [param]

7

ByRef [param] As [type]

4

[param] : [type] byref

可选字符串

4

string param = [default]

7

Optional [param] As String = [default]

N/A

4

Normal functions do not support optional parameters.

一般函数不支持可选参数

Method functions use: ?[param] : [type]

方法函数用:?[param] : [type]

其它的可选值

4

[type] param = [default]

7

Optional param As [type] = [default]

可空字符串

1

string param

7

param as String

4

[param] : string

[param] : string option

其它的空值参数

2

[type]? param

8

param As Nullable(of

[type])

4

[param] : Nullable<[type]>

[param] : [type] option

9

param as [type]?

可选的其它可空参数

4

[type]? param = [default]

10

Optional param As [type]? = [default]

4

?[param] : Nullable<[type]>

?[param] : [type] option

注意:F#不支持返回多个值,所以这种支持是有限的。不使用 ByRef 语法是不能更新多个任意的可变值。

查看英文原文: Wrapping Stored Procedures in .NET Languages

2009-06-04 10:432066
用户头像

发布了 87 篇内容, 共 24.7 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

宝藏级别,GitHub上的SpringBoot核心笔记,讲得太清晰了

程序知音

“程”风破浪的开发者 | web3.0爆红是炒作还是真有赚头?

三掌柜

Web3.0 10月月更 “程”风破浪的开发者

华为云连接CC,助力企业一站式解决跨区域传输难问题

科技怪授

华为云CC链接

重磅 | 青藤蜂巢入围领导者象限,增长指数&综合竞争力第一!

青藤云安全

主机安全 青藤云安全

云原生机甲,真正的服务网格

如水

云原生 servicemesh 云原生机甲 CloudMecha

Spring之定时调度

Andy

企业办公转型的出路在哪里?华为云桌面开创办公新形式

爱科技的水月

Spring Framework框架简介

Andy

【网易云信】Sanitizers 系列之 Sanitizers 概述

网易智企

运维 服务器

​Apache IoTDB UDF 「Sample」的案例与最佳实践

Apache IoTDB

数据库 Apache IoTDB

Spring之资源读取

Andy

顶会最强的前20%!电影情感效应预测论文拿下ACMMM Oral收录!

阿里巴巴文娱技术

人工智能 情感计算

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

低代码在企业数字化转型中有什么价值?

飞算JavaAI开发助手

跨区域传输数据不够流畅?华为云连接CC了解一下

科技怪授

华为云链接

万物皆可集成系列:低代码对接阿里物流API实现快递跟踪

葡萄城技术团队

前端 低代码 电商 API

数组元素积的符号

掘金安东尼

算法 10月月更

Sanitizers 系列之 Sanitizers 概述

网易云信

运维 服务器

官宣:新功能正式上线!

青藤云安全

主机安全 青藤云安全 青藤智库

Apache Kyuubi 在B站大数据场景下的应用实践

网易数帆

hive Kyuubi spark SQL 企业号十月 PK 榜

Apache IoTDB v0.13.3 发布!

Apache IoTDB

数据库 Apache IoTDB

Spring Boot「17」数据库连接池

Samson

Java spring 学习笔记 spring-boot 10月月更

拒绝“内鬼式”数据泄露,安全内控如何构建?

极盾科技

企业如何建立数据分类分级制度

极盾科技

数据安全 数据分类分级

华为云桌面,随时随地助力企业轻松办公

科技怪授

华为云桌面

一个疯子居然获得北京市科学技术奖?

青藤云安全

青藤云安全 北京科学技术奖

【web 开发基础】PHP 的流程控制之多向条件分支结构(switch) -PHP 快速入门 (16)

迷彩

switch case switch语句 10月月更 PHP基础 分支结构

华为云桌面,如何为企业构建新型工作方式

爱科技的水月

Go语言入门08—函数

良猿

Go golang 后端 10月月更

Spring之控制反转

Andy

Spring之依赖注入

Andy

在.NET语言中封装存储过程_.NET_Jonathan Allen_InfoQ精选文章