写点什么

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

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

关注

评论

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

活动火热报名中|搜索进化论:基于大模型的企业级AI搜索

阿里云大数据AI技术

人工智能 AI搜索 搜索开发工作台

淘宝商品评论API:深入探索商品使用场景与评价信息

代码忍者

人工智能 | Mistral 大语言模型

测试人

人工智能 软件测试

廊坊具有资质等保测评机构叫做什么?位于哪里?

行云管家

网络安全 数据安全 堡垒机 廊坊

未完待续

Anliven

职业发展 价值

如何在Ubuntu 20.04|18.04上安装FreeSwitch

百度搜索:蓝易云

Linux安装nginx

六哥是全栈

Linux NGINX 安装

讯飞星火版「Her」正式上线!成立仅16月的无问芯穹完成近5亿元A轮融资|AI日报

可信AI进展

链动2+1系统模式开发搭建

V\TG【ch3nguang】

QCN9074: The Future of High-Performance Wireless Solutions

wallyslilly

QCN9074 QCN9024

“京东云深海数据平台” 焕新升级 免费体验!

京东科技开发者

地理围栏,打造智能生活新边界

HarmonyOS SDK

HarmonyOS

DockerCompose部署es和kibana

百度搜索:蓝易云

浅析Jetty与tomcat区别

百度搜索:蓝易云

十五年以来 — 战略性云平台服务的演进路径之全面呈现(含亚马逊、微软和谷歌)

Moehoo猛虎

微软 AWS 云服务 Gartner 魔力象限

如何选择合适的云桌面系统方案?

上海锐起科技

文化产业怎么定义?需要用到堡垒机吗?

行云管家

文化 堡垒机 文化产业

智源研究院举办第二期“数据与行业应用Workshop”

智源研究院

Databend Meta-Service 架构概述

Databend

得物App白屏优化系列|归因篇

得物技术

android 稳定性 企业号2024年8月PK榜

积硅步以致千里,积怠惰以致深渊

Anliven

成长 激励

仓储管理这些坑,你有没有经历过?

天津汇柏科技有限公司

低代码 AI 人工智能

火山引擎携手居然之家,共推家居行业的数智化发展

新消费日报

大模型在研发数据中台的应用实践

百度Geek说

大模型 研发、 数据库· 产品架构

有效阅读

Anliven

方法 个人提升 阅读

天翼云HBlock:Step by step,一杯咖啡的时间轻松搭建企业存储集群

三掌柜

天翼云HBlock

Linux中的chsh命令及示例

百度搜索:蓝易云

数据工程(三):数据桥梁的基石——深度剖析数据集成与整合中的采集艺术

数造万象

数据治理 数据采集 数据集成 数据孤岛 数据工程

Mybatis-Plus常见注解

百度搜索:蓝易云

缓存预热有哪些方案?

江南一点雨

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