最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

Django2.x中url路由的path()与re_path()参数解释

BigYoung

django path url re_path 参数

Mac JetBrains(IDE)常用快捷键

王坤祥

JetBrains 快捷键

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

大头星

Java zookeeper 分布式

linux入门系列5--新手必会的linux命令

黑马腾云

Linux centos7 Shell linux命令 linux操作

Windows AD巡检报错处理

BigYoung

windows AD 报错 巡检

随着区块链技术的成熟,全球企业开始拥抱公共区块链

CECBC

区块链技术 公共区块链

定义“开发者关系”

开发者关系

开发者关系 开发者运营 技术运营 开源社区

Nginx配置80端口用于多个域名

石云升

nginx 域名配置 80端口共用

CentOS 7 配置Supervisor 服务遇到的坑总结

BigYoung

centos 报错 Supervisor

CIC国信公链:做坚实的底层技术支撑,让区块链为现代农业插上腾飞的翅膀

CNG农业公链

区块链 农业发展 CIC国信公链 CNG农业链 赵其刚

吐血整理Windows电脑入侵自检大全

BigYoung

黑客 windows 日志 异常 自检

Linux之crontab命令

王坤祥

Linux crontab

同行分析优化

誓约·追光者

Sparksql 优化

跟我一起基于Karma搭建一个测试环境(上)

Jack Q

大前端 Karma 测试框架搭建

开发者关系(DevRel)的新手指南

开发者关系

开发者关系 开发者运营 技术运营 开源社区

十年磨一剑-BIGO全球音视频技术解决方案

InfoQ_3597a20b53cc

人工智能 大数据 技术

LeetCode题解:88. 合并两个有序数组,双指针+从后往前,JavaScript,详细注释

Lee Chen

大前端 LeetCode

linux入门系列3--常见的linux远程登陆管理工具

黑马腾云

Linux xshell securecrt putty finallshell

「分布式一致性协议」从2PC、3PC、Paxos到 ZAB

大头星

Django 表单处理流程详解

BigYoung

django 表单 流程

9个典型的开发者关系面试题

开发者关系

开发者关系 开发者运营 技术运营 开源社区

lgloo Software 的 Jira Cloud 转型之旅

Atlassian

项目管理 DevOps 敏捷开发 Jira Cloud

Linux入门系列1--环境准备及Linux安装

黑马腾云

Linux centos 运维 操作系统

低/零代码平台的优点有哪些?

代码制造者

编程语言 低代码 零代码 信息化 编程开发

linux入门系列2--CentOs图形界面操作及目录结构

黑马腾云

Linux centos7 操作系统 系统运维

话题讨论 | 特斯拉和拼多多杠上了,你有什么看法?

InfoQ写作社区官方

写作平台 话题讨论

RPC原理

石刻掌纹

Linux数据流重定向

王坤祥

Linux linux操作

linux入门系列4--vi/vim编辑器

黑马腾云

vim Linux centos7 操作系统 VI

彻底解决雪花算法时间回拨问题新方案

柿子

算法 雪花算法

物流与区块链加供应链的现状与未来趋势

CECBC

行业资讯 区块链技术 供应链

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