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:432054
用户头像

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

关注

评论

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

python 国际化实践

walker12138

Python flask i18n

国内首个自主可控区块链技术发布!已在北京冷链追溯中显威

CECBC

区块链

马特系统开发流程丨马特量化机器人系统开发案例

系统开发咨询1357O98O718

微软在比特币区块链上推出身份认证平台

CECBC

比特币

ARTS-Week-1

绝影

ARTS 打卡计划 ARTS活动

由浅入深了解Nirvana NAC公链的两面性NA公链

区块链第一资讯

区块链 公链 挖矿

火币矿池pro系统开发介绍案例丨火币矿池pro源码功能

系统开发咨询1357O98O718

Wireshark数据包分析学习笔记Day23

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

百位优质创作者签约计划|声网签约权益

InfoQ写作社区官方

签约计划 热门活动

【得物技术】出价组DDD分层模型总结

得物技术

技术 总结 DDD 模型 出价

来云智技术论坛,带你认识 云智一体!

百度大脑

软件工程笔记:什么是软件工程

风翱

软件工程 3月日更

PaddleWeekly | 飞桨开源项目每周推

百度大脑

如何减少期望值差异

石云升

绩效 28天写作 职场经验 管理经验 3月日更

《经济学人》2021年3月27日刊精彩文章导读及资源免费下载

wbliu85

HUBDEX交易所系统开发源码案例

系统开发咨询1357O98O718

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

设计模式简介

happlyfox

学习 设计模式 3月日更

寻找被遗忘的勇气(二十六)

Changing Lin

3月日更

【OpenPyXL】对Excel单元格的操作

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

常考面试题之css篇

yumibgt

MySQL-MVCC与锁机制

insight

3月日更

3.1 Go语言从入门到精通:包

xcbeyond

3月日更 Go 语言

Photoshop CC 2019 の 安装

空城机

PhotoShop ps p图 adobe

百位优质创作者签约计划|InfoQ 签约权益

InfoQ写作社区官方

签约计划 热门活动

2020年京东161亿研发费用,钱怎么花的?

吴俊宇

投资 数字化 京东

国内唯一,阿里云挺进 Forrester 全球云数据仓库卓越表现者象限

阿里云大数据AI技术

云计算 大数据 阿里云 数据仓库 Forrester Wave

用 19 张思维导图描述Spring Cloud的概念和主要组件,建议收藏

北游学Java

Java 面试 Spring Cloud

简单数据结构总结

我是程序员小贱

3月日更

2021最新分享字节四面成功拿Offer!

比伯

Java 编程 架构 面试 计算机

Golang :后端开发中的万能药吗?

华为云开发者联盟

后端 开发 分布式系统 Go 语言

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