产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

Spring 5(四)JdbcTemplate

浅辄

Java Spring5 11月月更

源码学习之Spring容器创建原理

京东科技开发者

xml spring 源码 容器 测试

【C语言】float 关键字

謓泽

11月月更

说说Vue响应式系统中的Watcher和Dep的关系-面试进阶

bb_xiaxia1998

Vue

从recat源码角度看setState流程

flyzz177

React

Flask框架:如何运用Ajax轮询动态绘图

华为云开发者联盟

JavaScript 前端 华为云 企业号十月 PK 榜

看透react源码之感受react的进化

goClient1992

React

【设计模式】原型模式:猴头,我叫你一声你敢答应吗?

游坦之

11月月更

什么是Maven

莪是男神

Java maven 11月月更

为提高 SDLC 安全,GitHub 发布新功能|GitHub Universe 2022

SEAL安全

GitHub 安全

ShardingSphere + OpenSergo,共同提升微服务体系下数据库的性能与稳定

SphereEx

数据库 微服务 Apache ShardingSphere

APP“小动作”不断?HarmonyOS 3隐私中心可视化面板让它无处藏身

Geek_2d6073

GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

阿里巴巴文娱技术

开源 移动开发 移动端开发

FusionInsight MRS Flink DataStream API读写Hudi实践

华为云开发者联盟

大数据 华为云 数据读写 企业号十月 PK 榜

深入react源码看setState究竟做了什么?

flyzz177

React

从源码角度看React-Hydrate原理

flyzz177

React

学习MySQL必须掌握的13个关键字,你get了吗?

小小怪下士

Java MySQL 程序员

clickhouse在风控-风险洞察领域的探索与实践

京东科技开发者

flink 数据 Clickhouse 风控 风险控制

React源码分析(一)Fiber

goClient1992

React

Spring 5(三)AOP

浅辄

Java Spring5 11月月更

优化开发人员对 K8s 安全的影响

HummerCloud

Kubernetes DevSecOps 11月月更

高频react面试题自检

beifeng1996

React

中高级前端开发需要掌握的vue知识点

bb_xiaxia1998

Vue

一份vue面试考点清单

bb_xiaxia1998

Vue

python的成员方法的简单介绍

乔乔

11月月更

Git学习笔记

lxmoe

git 学习笔记 常用命令 11月月更

说说你对Vue的keep-alive的理解

bb_xiaxia1998

Vue

图学习初探Paddle Graph Learning 构建属于自己的图【系列三】

汀丶人工智能

图神经网络 11月月更 随机游走算法 异质图

一个 SaaS 软件同本地部署 On-Premises 系统集成的实际项目案例分享

汪子熙

微服务 SaaS 系统集成 On-Premises 11月月更

React-Hooks源码深度解读

goClient1992

React

首个中文Stable Diffusion模型开源;TPU演进十年;18个PyTorch性能优化技巧 | AI系统前沿动态

OneFlow

人工智能 开源 深度学历 TPU

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