2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

什么是OSPF被动接口?如何配置?华为、思科、瞻博网络三厂商命令来了

wljslmz

OSPF 6 月 优质更文活动

DevOps| 研发效能团队和PMO团队如何合作共赢?

laofo

DevOps cicd 研发效能 持续交付 PMO

建立互联网可靠性工程体系框架的思路

阿泽🧸

可靠性工程 6 月 优质更文活动

三分钟知识点 - 如何选择编程语言

雨中山

SeaTunnel StarRocks 连接器的使用及原理介绍

StarRocks

数据库 大数据 OLAP 湖仓一体 大数据 开源

Taro框架应用优势下的移动App开发创新模式

FinFish

taro 跨端开发 小程序容器 跨端框架 小程序容器技术

软件测试|教你用skip灵活跳过用例

霍格沃兹测试开发学社

三分钟知识点 - 重构平滑升级

雨中山

软件测试|PC端应用自动化最佳解决方案——Pywinauto

霍格沃兹测试开发学社

软件测试|Pytest必会技巧(三)

霍格沃兹测试开发学社

软件测试|简单易学的性能监控体系prometheus+grafana搭建教程

霍格沃兹测试开发学社

架构实战营模块 1 作业

銀色流星

架构实战营

软件测试|Pytest的必会技巧(一)

霍格沃兹测试开发学社

软件测试|Pytest必会技巧(二)

霍格沃兹测试开发学社

Golden Gate (GGX) ZK 预编译: 彻底改变游戏玩法,成本降低千倍

股市老人

小程序容器技术助力数字门户拓展多样化服务

FinFish

跨端开发 小程序容器 小程序容器技术 数字门户 移动门户

GitOps 最佳实践(下)| 基于 Amazon EKS 构建 CI/CD 流水线

亚马逊云科技 (Amazon Web Services)

Kubernetes

Docker技术架构概述

穿过生命散发芬芳

Docker 6 月 优质更文活动

C语言编程语法—输入与输出

芯动大师

函数 输入输出 6 月 优质更文活动

快手严厉打击直播下收割麦行为:自媒体蹭热度不可违背公序良俗

石头IT视角

软件测试|手把手教你用Python来模拟绘制自由落体运动过程中的抛物线

霍格沃兹测试开发学社

软件测试|不会Python RPC,一篇文章教你入门

霍格沃兹测试开发学社

对比才知差距!海尔“精华洗”用实验告诉用户

脑极体

海尔

软件测试|一步到位教会你Python字典操作(一)

霍格沃兹测试开发学社

软件测试|Pytest必会技巧(四)使用autouse实现自动传参

霍格沃兹测试开发学社

硬核干货!一文掌握 binlog 、redo log、undo log

架构精进之路

MySQL 数据库 后端 6 月 优质更文活动

分析初识vue小案例

张三丰无极

6 月 优质更文活动

重磅版本发布|三大关键特性带你认识 Milvus 2.2.9 :JSON、PartitionKey、Dynamic Schema

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

2023-06-05:Redis官方为什么不提供 Windows版本?

福大大架构师每日一题

redis 福大大

关于前端,你都会什么?

MonkeyZz

前端

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