大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

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

关注

评论

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

CnosDB:深入理解时序数据修复函数

CnosDB

开源 时序数据库 CnosDB

轻播zFuse Pro for Mac(简单小巧的视频播放器)v1.7.42直装版

Rose

Allavsoft Video Downloader Converter(视频下载和格式转换) mac/win

Rose

亚马逊云科技获评Gartner®全球工业物联网平台魔力象限领导者

财见

网络安全作业一

白开水又一杯

基于Java+微信小程序实现《医院管理系统小程序》

hunter_coder

后端开发

基于Java+微信小程序实现《校园水电费管理平台》

hunter_coder

后端开发

回顾 DTC 2024 大会——聚焦数据技术创新:揭秘下一代纯实时搜索引擎 INFINI Pizza

极限实验室

数据库 极限科技 DTC2024

Go语言专题之map底层

Go hashmap map

Mac电脑上的快速启动工具 LaunchBar Mac破解版

Rose

我的编码智能助手——代码小浣熊

老周聊架构

AI Agent 代码小浣熊 小浣熊家族

PingCAP 成为全球数据库管理系统市场增速最快的厂商

PingCAP

数据库 开源 分布式 市场 pingCAP

基于Java+微信小程序实现《优购电商小程序》

hunter_coder

后端开发

基于Java+app爱心小屋公益机构智慧管理详细设计和实现

hunter_coder

后端开发

基于Java+微信小程序实现《模拟考试平台》

hunter_coder

后端开发

简洁易用的翻译词典软件Easydict for mac

Rose

macOS Sequoia 15(Macos15系统)v15.0 Beta 2测试版本

Rose

Dify + TiDB Vector,快速构建你的 AI Agent

PingCAP

TiDB AI Agent dify

基于Java+MySQL停车场车位管理系统详细设计和实现

hunter_coder

后端开发

基于Java+Spring+Vue毕业生生活用品出售网站设计和实现

hunter_coder

后端开发

Blue Cat Audio Blue Cat PatchWork mac(蓝猫桥接插件)v2.68激活版

Rose

SiteSucker Pro for Mac(网站下载工具SiteSucker专业版)v5.4.1中/英文版

Rose

Bookends for Mac(文献书籍管理工具)v15.0.4注册激活版

Rose

基于Java+微信小程序学生选课系统详细设计和实现

hunter_coder

后端开发

基于Java+微信小程序实现《微信阅读平台》

hunter_coder

后端开发

基于Java+微信小程序智能停车场管理系统详细设计和实现

hunter_coder

前端开发 后端开发

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