NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

北鲲云超算平台在AlphaFold2对蛋白质研究中有何作用?

北鲲云

ipfs最新官网通知?ipfs是一场技术革命?

区块链 分布式存储 IPFS Filecoin ipfs挖矿

2020年五面蚂蚁,分布式架构+RPC+kafka+多线程

欢喜学安卓

Java 程序员 后端

30岁程序员裸辞,真香定律

Geek_f90455

Java 程序员 后端

EMQ X VS RabbitMQ:两大消息服务器 MQTT 性能对比全解(上)

EMQ映云科技

RabbitMQ 物联网 IoT mqtt emq

财经大课:看懂价格信号

石云升

财经思维 9月日更

一款神器自助帮你换背景,超强实时人像扣图算法开源啦!

百度开发者中心

最佳实践 图像处理 开源技术

AcWing - 99,Java技术面试题及答案

Geek_f90455

Java 程序员 后端

Element-UI 要怎么学?官方文档,阿里架构师深入讲解Java开发

JVM调优资料

Java 程序员 后端

Paxos理论介绍(3): Master选举

OpenIM

有道词典 Flutter 架构与应用

有道技术团队

大前端 客户端 网易有道

springboot elementui vue商城微信小程序源码(毕设)

清风

小程序 Vue 毕业设计 毕设

解析金融服务如何在区块链中建立信任?

CECBC

RVB2601开发板快速上手教程

Roy夹馍

MCU risc-v 嵌入式开发

GC Roots面试(1),springmvc教程视频

JVM调优资料

Java 程序员 后端

2020全网最新SQL优化面试专题及答案,一步搞定你疑惑的数据结构与算法系列

欢喜学安卓

Java 程序员 后端

低代码和无代码的区别

低代码小观

低代码 开发工具 无代码 低代码与无代码区别

百度智能云天工物联网支持多种类数据传输,MQTT助力数据、语音、视觉应用智能化

百度大脑

人工智能

35岁+程序员就该被辞退,kafka入门与实践百度云网盘

Geek_f90455

Java 程序员 后端

2021 Java开发 最全笔记 建议收藏!,搞定kafka看这一篇就够了

欢喜学安卓

Java 程序员 后端

6年拉力工作经验,学了阿里P8级架构师的7,Java笔试题库及答案

Geek_f90455

Java 程序员 后端

95% 的算法都是基于这 6 种算法思想,毕向东Java教程百度云

Geek_f90455

Java 程序员 后端

AcWing 730,史上最全最精简的学习路线图

Geek_f90455

Java 程序员 后端

Dubbo—SPI及自适应扩展原理,劲爆

JVM调优资料

Java 程序员 后端

天津赛誉食品有限公司与小王庄黄金梨携手 助推文旅产业化联盟销售

InfoQ 天津

数字人民币与智能合约

CECBC

服务网格在百度核心业务大规模落地实践

百度开发者中心

最佳实践 方法论 Service Mesh 服务网格

30G上亿数据的超大文件,如何快速导入生产环境,全网疯传

Geek_f90455

Java 程序员 后端

RVB2601开发板用户指南

Roy夹馍

IoT risc-v 嵌入式开发

1-7中HashMap死循环分析,透彻解析

欢喜学安卓

Java 程序员 后端

2021年1月8号,这些新技术你们都知道吗

欢喜学安卓

Java 程序员 后端

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