正式定档!QCon 北京站改期为2024年4月11-13日,地点:北京·国测国际会议会展中心 >>> 了解详情
写点什么

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

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

关注

评论

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

leetcode 220. Contains Duplicate III 存在重复元素 III(困难)

okokabcd

LeetCode 数据结构与算法

基础设施 NFTScan 正式发布 Avalanche 网络 NFT 浏览器

NFT Research

区块链 NFT web3 数据基础设施 Avalanche

idea启动build过慢

拾光师

IDEA 10月月更

React源码分析8-状态更新的优先级机制

goClient1992

React

运维监控管理平台 TASKCTL 流程启动的3种不同模式

TASKCTL

大数据 数据仓库 自动化运维 TASKCTL DevOps工具

打造面向工业4.0的智能工厂01|云边协同架构助力视觉AI缺陷检测应用构建

EMQ映云科技

AI 物联网 IoT emqx 10月月更

阿里全新推出:微服务突击手册,把所有操作都写出来了|超清PDF

程序知音

Java 微服务 阿里 SpringCloud 后端技术

一文带你玩转ProtoBuf

王中阳Go

Go 微服务 RPC protobuf 10月月更

太神了!阿里p7大佬总结的Java面试心得,起始—进阶—突击,一应俱全!

Geek_0c76c3

Java 数据库 开源 程序员 架构

技术内幕 | StarRocks Pipeline 执行框架(上)

StarRocks

数据库

实践了上万次,原来这些才是敏捷测试需要遵循的原则

敏捷开发

敏捷 测试 单元测试

云安全将进入黄金时代 - Gartner 报告解读

HummerCloud

云计算 云安全 Gartner

阿里老表总结的“JVM核心笔记”,让我瞬涨7K!

程序知音

Java 架构 性能优化 JVM 后端技术

中国CRM要超车,没有弯道

ToB行业头条

基于 openEuler 22.09 版本构建的 NestOS 全新发布!

openEuler

镜像 操作系统 openEuler

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript

从零手写react-router

helloworld1024fd

JavaScript

鹅厂二面,nginx回忆录

有态度的马甲

TDengine 3.0 中如何编译、创建和使用自定义函数

TDengine

数据库 tdengine 开源 时序数据库

阿里大牛强力推荐:springboot实战派文档,采用知识点+实例的形势,深入了解

Geek_0c76c3

数据库 spring 开源 程序员 架构

自己手写一个redux

helloworld1024fd

JavaScript

JPEX推出竞猜世界杯冠军球队活动,质押平台通证赢奖金

股市老人

啃透Alibaba这份面试通关宝典,信心倍增!我成功拿下今年第15个Offer

Geek_0c76c3

Java 数据库 开源 程序员 架构

《数字经济全景白皮书》证券财富管理篇 重磅发布

易观分析

金融 证券

京东的“618”高并发秒杀终极版教程!(Java语言设计)

程序知音

Java 架构 并发编程 高并发 后端技术

腾讯强推Spring Security速成笔记太香了!认证授权一键搞定

程序知音

Java 架构 spring security 后端技术 Spirng

React源码分析7-state计算流程和优先级

goClient1992

React

人工智能软件及服务细分市场数据监测报告合集

易观分析

人工智能 报告

面试官:你说说Vue中的组件和插件有什么区别?

CoderBin

vue.js 面试 前端 组件 10月月更

太强了!阿里巴巴最新开源303页Spring全家桶高级笔记,深入瓦解源码

Geek_0c76c3

Java 开源 程序员 架构 开发

在 Go 语言中使用 exec 包执行 Shell 命令

宇宙之一粟

Shell Go 语言 10月月更

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