写点什么

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

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

关注

评论

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

昇腾AI开发者创享日暨昇腾AI创新大赛2023大连区域赛成功举办

彭飞

九章云极DataCanvas公司入选人工智能融合发展与安全应用典型案例

九章云极DataCanvas

规模化、可复制的大模型应用——企业知识管家

九章云极DataCanvas

一个 println 竟然比 volatile 还好使? | 京东云技术团队

京东科技开发者

volatile JIT 企业号9月PK榜 println

敏捷在建设项目中的应用

ShineScrum

敏捷在建设项目

第2期 | 破局 全球项目、精智核算

用友BIP

项目管理

矩阵起源荣获上海科技创新资金计划项目立项资助

MatrixOrigin

数据库 云原生 HTAP MatrixOrigin MatrixOne

NineData SQL 窗口现已支持深色模式,让开发者长期用眼无忧!

NineData

程序员 SQL开发 NineData

集成销售和收入计划,打造企业内部的协作共赢

智达方通

数据分析 智达方通 优化流程

Embeddig技术与应用 (1) :Embedding技术发展概述及Word2Vec

Baihai IDP

人工智能 深度学习 AI Embedding 白海科技

校源行丨开放原子开源基金会赴黑龙江科技大学走访交流

开放原子开源基金会

火山引擎DataLeap推出两款大模型应用: 对话式检索与开发 打破代码语言屏障

字节跳动数据平台

数据中台 数据治理 数据安全 数据研发 企业号9月PK榜

矩阵起源荣获"2023大数据助力工业经济"年度创新产品

MatrixOrigin

数据库 云原生 HTAP MatrixOrigin MatrixOne

华为云ROMA Connect行业生态联盟成立,携手共建行业软件合作新生态

云计算 华为云 应用与数据集成

Vulkan并发机制

江湖修行

android 前端 opengl 渲染 vulkan

开放原子开发者工作坊|大咖论开源项目的安全之道

开放原子开源基金会

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用

TDengine

tdengine 时序数据库

如何下载和安装 Eclipse?

小齐写代码

九章云极DataCanvas公司智算中心正式落地

九章云极DataCanvas

研究了代码质量后,开发效率提升10倍,bug减少20倍!!

飞算JavaAI开发助手

交易日均千万订单的存储架构设计与实践 | 京东物流技术团队

京东科技开发者

架构设计 订单系统 存储架构 企业号9月PK榜

20个最佳实践提升Terraform工作流程|Part 2

SEAL安全

最佳实践 IaC terrafrom 企业号9月PK榜

构建资产数智化平台,为央国企资产保值增值保驾护航

用友BIP

资产管理

集成开发环境(IDE)的用途?

小齐写代码

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