在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

直播|HashData信创概览

酷克数据HashData

信创

云渲染怎么收费??云渲染一张图多少钱?

Renderbus瑞云渲染农场

云渲染 云渲染平台

VUCA时代下的产品创新方法论(上)

Jackchang234987

VUCA 产品创新

重磅!TDengine 3.2.0 正式发布

TDengine

数据库 tdengine 时序数据库

我把传统业务架构升级到业务中台架构的心得

大东(AIP智能体运营专员)

自动化测试技术笔记(二):准备工作的切入点

老张

自动化测试

架构实战营 3-2 架构设计前期随堂练习

西山薄凉

「架构实战营」

小游戏流量变现都有哪些窍门?

FinFish

小游戏 微信小程序-游戏 小程序游戏 微信小游戏

【FAQ】申请Health Kit权限的常见问题及解答

HarmonyOS SDK

HMS Core

“唤醒”大数据价值,敏捷数据开发成为企业数字化发展的法宝

数造万象

Laravel中HasOne和BelongsTo的区别

ModStart

在新基建数字化的时代,寻找自我的突破和价值创造

大东(AIP智能体运营专员)

我对中台的理解和企业数字中台建设的思考

大东(AIP智能体运营专员)

传统企业DevOps基础设施架构规划之道

冯文辉

DevOps 华为云DevCloud 华为CodeArts

新华三推出人工智能模型训练平台,让智慧算力触手可及

脑极体

RayLink 远控软件又推出 2 个重磅宝藏功能免费用

RayLink远程工具

远程控制软件 远程办公软件 远控软件

专访实在智能孙林君:颠覆传统RPA的实在IPA模式如何做到真正人人可用

王吉伟频道

RPA 机器人流程自动化 实在智能 实在IPA模式 RPA人人可用

我对管理角色带团队的一些经验分享

大东(AIP智能体运营专员)

如何构建企业内的 TiDB 自运维体系

得物技术

数据库 运维 TiDB TiDB 底层架构 12 月 PK 榜

低代码为什么会受到企业青睐?是何原因?

优秀

低代码

专利解析|数据中台—数据流配置弹框交互优化方法

元年技术洞察

数据中台 数字化转型 专利解析

阿里云视觉智能开放平台——人脸活体检测算法重磅升级

夏夜许游

服务升级 人脸活体检测 人脸人体

智能合约DAPP开发WEB3.0系统搭建技术

薇電13242772558

智能合约

隐匿于喧嚣城市的世外桃源,「武汉浮生艺术馆」开放小程序预约通道,顺利举办多场艺术展览

天天预约

小程序 SaaS 预约工具 展览 艺术馆

如何优化大场景实时渲染?HMS Core 3D Engine这么做

HarmonyOS SDK

HMS Core

大咖说·开源人说|数据库 PolarDB 开源的商业逻辑与价值思考

大咖说

数据库 阿里云 开源

我把整个研发中台拆分过程的一些心得总结

大东(AIP智能体运营专员)

Celestia 简介:重新构想的区块链

devpoint

区块链 以太坊 12月月更 Celestia

HTTP报文内容

穿过生命散发芬芳

HTTP 12月月更

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