写点什么

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

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

关注

评论

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

为什么云办公模式必选云桌面

青椒云云电脑

云桌面 云桌面解决方案

告别烟囱式建设,DT时代同样需要操作系统

极客天地

吃货大作战!华为Mate 60负一屏点外卖每天狂送优惠!

最新动态

D-SMART对接OceanBase4 看 OB的可观测性:值得夸赞的和要吐槽的都不少

DBAIops社区

DBAIops D-SMART

云电脑云手机相继亮相,传统PC会被淘汰吗?

青椒云云电脑

云电脑

私有云厂商怎么选?私有云三大技术盘点

青椒云云电脑

私有云 私有云厂商

Meetup 回顾|Data Infra 研究社第十五期(含资料发布)

Databend

英特尔以全栈式产品组合,驱动云服务和AI产业发展

E科讯

用户指南系列 | 使用 Greptime 官方工具高效地进行 PromQL 查询

Greptime 格睿科技

数据库 软件 云原生

Footprint Analytics 与 Xterio 携手合作,将推动 Web3 游戏领域的数据驱动革命

Footprint Analytics

区块链 web3

企业直播为什么要选择私有云

青椒云云电脑

私有云 私有云平台

为什么工厂要部署私有云

青椒云云电脑

私有云

奇点云:企业级数据基础设施的设计思路是“操作系统”

奇点云

AI 奇点云 数据云操作系统

ARTS-WEEK5-23.9.11~23.9.17

Echo!!!

新基建加码,私有云成传统基建升级首选

青椒云云电脑

桌面云 云桌面

微服务回归单体,是技术架构倒退?我看未必!

雾岛听风(锋)

技术升级,详解私有云轻运维模式

青椒云云电脑

私有云 云桌面

语音合成技术的简介与未来发展

数据堂

鸿蒙开发套件之DevEco Profiler助您轻松分析应用性能问题

HarmonyOS开发者

HarmonyOS

实施全面预算管理 健全企业内部控制

智达方通

内部控制 企业内部控制 全面预算管理 全面预算管理系统

“存量竞争” 体验为王,火山引擎边缘云助力内容社区破局

火山引擎边缘云

CDN 边缘计算 加速 边缘云

低代码:简化开发流程,提高工作效率

树上有只程序猿

低代码 应用开发 JNPF

倒计时7天!2023 PRO_大会:这些PRO,如“7”而至!

ToB行业头条

语音合成技术的应用与挑战

数据堂

基于深度学习的语音合成技术的进展与未来趋势

数据堂

Canvas 低代码工具,多人自研开发全流程优化|ModelWhale 版本更新

ModelWhale

云计算 Jupyter Notebook canvas 数据驱动 在线编程

引领PC行业大步向前,英特尔做了哪些努力?

E科讯

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