写点什么

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

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

关注

评论

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

不愧是阿里内部“SpringCloudAlibaba学习笔记”这细节讲解,神了

Java 程序员 架构 面试 微服务

网络攻防学习笔记 Day105

穿过生命散发芬芳

态势感知 网络攻防 8月日更

Alibaba12年技术老兵整理的“MySQL 学习笔记”带你轻松拿捏MySQL

Java~~~

Java MySQL 数据库 架构 面试

秒杀系统设计-超卖问题

泽睿

秒杀 秒杀系统

京东T7架构师用470页就把微服务架构原理与开发实战文档讲完了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

网络安全证书合集系列

网络安全学海

网络安全 证书 信息安全 渗透测试 安全漏洞

缓存知识总结

十二万伏特皮卡丘

马士兵老师亲自总结3000+道Java面试题,刷完吊打架构师面试官

Java 程序员 架构 面试 计算机

Alibaba22届校招启动!连夜整理一份七大专题Java架构速成笔记

Java~~~

Java 架构 面试 阿里 校招

这份阿里P8级别内部疯传的“Linux私房菜”让你一次吃个饱

Java 编程 程序员 IT 计算机

解除限制!Alibaba不在低调,P8大神纯手撸300页Java高并发手册

Java~~~

Java 架构 面试 高并发 架构师

毕业总结

俞嘉彬

架构实战营

终于拿到了阿里2021年度九大Java技术文档——面试题+文档+白皮书

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

被boss直聘转发过多而“封杀”的2021年全套java高级面试题有多牛

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

校友名片小程序设计方案

CC同学

小程序云开发 校友小程序

MySQL 系列教程之(二)Windows 安装 MySQL5.7.17

若尘

MySQL 8月日更

FastApi-14-文件上传-2

Python研究所

FastApi 8月日更

性能测试框架中实时QPS取样器实现

FunTester

性能测试 测试框架 QPS FunTester 取样器

前方高能!Alibaba最新出版的JDK源码剖析手册(究极奥义版)开源

Java~~~

Java 架构 jdk 面试 架构师

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

Java 程序员 架构 面试 IT

阿里大牛最新公开压轴的“Redis深度笔记”,GitHub已标星81.6K

Java~~~

Java redis 架构 面试 架构师

Alibaba内部首发“面试百宝书+超全算法面试手册”PDF版下载

Java~~~

Java 架构 面试 微服务 JVM

一夜标星过百万,轻松霸榜GitHub的手绘图解HTTP笔记,竟来源阿里

Java~~~

Java 架构 面试 网络 HTTP

MySQL 系列教程之(三) MySQL 基本概念和操作

若尘

MySQL 8月日更

上线仅仅三小时,豆瓣评分均9.0的“四本程序员必刷书籍”火了

Java 编程 面试 IT 计算机

腾讯跟阿里两位王者之间的对比

Linux服务器开发

腾讯 阿里 C/C++ Linux服务器开发 Linux后台开发

netty系列之:使用UDP协议

程序那些事

Java Netty nio udp 程序那些事

Vue进阶(三十二):npm install、npm install --save与 npm install --save-dev 区别

No Silver Bullet

Vue 8月日更

Intellij运行Java程序启动等待BUG分享

FunTester

Java IDEA intellij bug

爆款阿里P5到P7晋升之路,九大源码文档助我超神果然努力幸运并存

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

猎杀时刻!阿里高工总结698页Spring学习笔记,疯狂狩猎大厂offer

Java~~~

Java spring 架构 面试 微服务

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