写点什么

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

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

关注

评论

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

万界星空科技线束行业MES系统

万界星空科技

数字化转型 工业互联网 mes 线束行业 线束mes

在CentOS上搭建NFS服务器

麦兜

Flask已死,FastAPI是未来

Bob Lin

Python django flask FastApi python web

开发者能力机制解析,玩转Sermant开发

华为云开源

服务治理 sermant 字节码增强框架

千亿级工业大数据的最优方案!智光电气的时序数据库应用

TDengine

tdengine 时序数据库 国产数据库

Sui 概览:技术特色与生态发展现状

Footprint Analytics

区块链 Sui Layer 1

Apache Doris 2.0.3 版本正式发布

SelectDB

数据库 大数据 数据湖 OLAP Doris

Amazon CodeWhisperer 体验

亚马逊云科技 (Amazon Web Services)

人工智能 云上探索实验室 Amazon CodeWhisperer

什么是 DDoS ?如何识别和应对DDOS攻击

德迅云安全杨德俊

Web 安全 DDoS

全渠道、全触点、全用户 | 数智化运营赋能企业生意“无边界”

用友BIP

数智营销

如何利用烛龙和谷歌插件优化CLS(累积布局偏移) | 京东云技术团队

京东科技开发者

前端 页面布局 CLS

QUIC在零信任解决方案的落地实践

权说安全

Flutter Web 和 H5

A __Sun A0 .

flutter HTML5, CSS3 flutter for web

天猫商品详情接口json 格式返回介绍

tbapi

天猫商品详情数据接口 天猫商品API接口 天猫API接口

记一次生产慢sql索引优化及思考 | 京东云技术团队

京东科技开发者

数据库 SQL优化 MySQL、

测试用例设计方法六脉神剑——第五剑:化气为型,场景用例破云 | 京东物流技术团队

京东科技开发者

测试 测试用例 场景法

极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例

极限实验室

中国信通院 极限科技 “星河”标杆案例

米哈游宣布启动鸿蒙原生应用开发

新消费日报

微店商品API:电商的实时数据利器

Noah

CodeArts 五年磨一剑,深耕信创软件开发工具

华为云PaaS服务小智

ide 全球软件开发大会

第13期 | 用友BIP项目云,助力科研类项目管理实现精智核算

用友BIP

项目管理

火山引擎DataLeap:助你实现从数据研发1.0到数据研发3.0的跨越

字节跳动数据平台

大数据 数据中台

灯具照明行业智能制造MES系统解决方案

万界星空科技

数字化转型 工业互联网 mes 智能照明 灯具mes

万界星空MES安灯管理:优化生产监控的重要工具

万界星空科技

数字化转型 mes 安灯系统 mes安灯管理 生产管理

finally中的代码一定会执行吗?

王磊

Java 面试题

mac强大的音视频转换器:Permute 3激活中文最新版

胖墩儿不胖y

Mac软件 音视频转换器 音视频格式转换

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