限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

在.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:431933
用户头像

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

关注

评论

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

关于Redis分布式锁这一篇应该是讲的最好的了,赶紧收藏起来

比伯

Java 编程 架构 面试 技术宅

老师讲的真棒!总结2020年最全180道Android岗面试题,Android校招面试指南

欢喜学安卓

android 程序员 面试 移动开发

老师讲的真棒!阿里P7级别面试经验总结,终获offer

欢喜学安卓

android 程序员 面试 移动开发

Redis为什么这么快?

数据君

redis

Gemini双子新约系统软件开发|Gemini双子新约APP开发

系统开发

观点|发展区块链金融,长三角如何建设“四梁八柱”

CECBC

区块链

只需三步!慢日志去无踪

数据君

数据库

专访 CNCF 大使张磊:让云原生不再是大厂专属

阿里巴巴云原生

开源 开发者 云原生 OAM CloudNative

http client 中的 connectionRequestTimeout, connectTimeout, socketTimeout

不在调上

案件数同比下降七成 北京引入“区块链”化解物业纠纷

CECBC

区块链 法律

数据库面试要点:关于MySQL数据库千万级数据查询和存储

华为云开发者联盟

数据库 sql 存储

IO问题成顽疾,鹅厂专家来教你

数据君

数据库

高并发下,如何让你的数据库再快一点?

数据君

数据库

终于拿到蚂蚁金服Offer!!!分享一下全程面试题和面试经验!

小Q

Java 学习 编程 架构 面试

一道腾讯面试题目:没有listen,能否建立TCP连接

linux大本营

c++ Linux TCP 后台开发 TCP/IP

加密货币可能是人类历史上最大的/富国银行报告:加密货币投资像19世纪50年代的早期淘金热财富转移

CECBC

数字货币

深入Linux内核架构——进程虚拟内存

赖猫

c++ Linux

得不到提升的开发老鸟,试试这3个方法,让你事半功倍!

Linux服务器开发

程序员 后端 互联网人 底层应用开发 Linux服务器开发

快速学会!啃完999页Android面试高频宝典,挥泪整理面经

欢喜学安卓

android 程序员 面试 移动开发

诚招译者 | Bruce Eckel On Java 8 中文版

图灵社区

Java

架构师训练营第 1 期 - 第 11周 - 学习总结

wgl

极客大学架构师训练营

了不起!靠技术脱贫,他们只用了短短两年!

华为云开发者联盟

人工智能 华为 技术

电信新报告 | 数字化转型:搁置还是加速?

VoltDB

5G安全 通信 电子信息

开发者,别让自己孤独

阿里巴巴云原生

开源 开发者 云原生 OAM CloudNative

深入浅出 WebRTC AEC(声学回声消除)

阿里云CloudImagine

阿里云 音视频 WebRTC 音频技术 视频云

疫情之下,被公司优化掉!同事大部分都去了创业型的公司,而我仅仅一年经验,却斩获多家大厂offer

Java~~~

Java 面试 架构师技能

关于Kubernetes和Docker关系的八个问题

杨明越

JVM调优不知道怎么回答,阿里总结四大模块,学不会就背过来

小Q

Java 学习 架构 面试 JVM

企业面临大危机,CRM崩溃告急,程序员竟用特殊手段化解危机!

Learun

敏捷开发 CRM

DolphinDB与Pandas对于大文本文件处理的性能对比

DolphinDB

数据库 pandas tsdb 数据库选择 DolphinDB

TensorFlow2 Fashion-MNIST图像分类(二)

书豪

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