写点什么

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

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

关注

评论

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

谷歌SEO优化教程:什么是内部链接?如何优化内部链接?

九凌网络

阿里巴巴1688.item_get API接口助力精准获取商品ID

技术冰糖葫芦

api 货币化 API 接口 API 文档 pinduoduo API

当AI文曲星,照耀学海

脑极体

AI

企业海外网络解决方案分析与比较

Ogcloud

SD-WAN 组网 企业组网 SD-WAN组网 SD-WAN服务商

探索比特币符文热:市场趋势与持续性分析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

第48期|GPTSecurity周报

云起无垠

软件测试学习笔记丨Selenium自动化关键数据记录

测试人

软件测试 自动化测试 测试开发

基于研发过程改进的质量度量模型

鲸品堂

数据分析 质量

企业理想中的IAM应该具备这四点:多、快、好、省

芯盾时代

企业 iam 统一身份认证 Idaas

来了,好上岸的中小厂最新面经!

王中阳Go

golang 面试题 面经 大厂面经 最新后端面经

Web3 游戏周报(4.14-4.20)

Footprint Analytics

gamefi

芯盾时代IDaaS:IAM能上云,身份安全更简单

芯盾时代

网络安全 身份安全 云服务 iam 统一身份认证

国内做TikTok直播,海外直播专线搭建是关键

Ogcloud

海外直播 tiktok直播 tiktok直播专线 海外直播网络 tiktok直播网络

数新大数据平台迁移解决方案

数新网络官方账号

大数据 数据迁移

BRC铭文NFT铸造质押挖矿系统开发运营

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Vision pro、人形机器人、Hala Point

声网

Apache IoTDB v1.3.1 发布|增加多种脚本工具、内置函数等功能

Apache IoTDB

软件测试学习笔记丨Selenium的PageObject设计模式

测试人

软件测试 自动化测试 测试开发

谷歌SEO算法更新发展史:谷歌SEO优化排名背后的密码

九凌网络

免备案高防服务器租用优势全解析:高效、便捷、安全

一只扑棱蛾子

高防服务器

全量与增量的配置模式

谷云科技RestCloud

数据同步 ETL 全量 增量

地方发

群星

测试 单元测试

开曼群岛:Web3企业的乐园

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 公链开发

公链系统开发全指南: 从规划到实施

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

比特币之路:技术突破、创新思维与领军人物

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

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