使用Command执行存储过程

原创 2003年10月13日 00:02:00

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

.NET Framework Developer's Guide

使用Command执行存储过程

 

在数据驱动的应用程序中,存储过程可以提供很多优点。使用存储过程可以将数据库操作封装到一条简单的命令中,可以优化效能,可以增强安全性。只需要按照SQL语法在存储过程名后面跟带参数就可以调用该存储过程。使用ADO.NETCommand对象的Parameters属性你还可以明确的定义和使用output参数和return值。

调用存储过程时,要设置Command对象的CommandType属性为StoreProcedure。一旦设定了CommandType属性为StoreProcedure,你就可以使用Parameters集合来定义参数,就像下面的例子。

注意 使用OdbcCommand调用存储过程时要求提供完整的ODBC CALL语法。

SqlClient

OleDb

Odbc

一个Parameter对象可以使用Parameter构造器创建,也可以通过调用Command对象的Parameters集合的Add方法创建。Parameters.Add方法的输入参数可以和构造器相同,也可以使用一个存在的Parameter对象。用System.DBNull.Value设置Parameter的值为空。

如果要设置Parameter为非一般的输入参数时,必须设置ParameterDirection属性为InputOutputOutput,或者ReturnValue。下面的例子演示了创建Input, Output, ReturnValue参数的差别。

SqlClient

OleDb

Odbc

SqlCommand中使用参数

SqlCommand中使用参数时,参数的名字必须和存储过程中相应参数的名字匹配。SQL SERVER.NET Framework Data Provider将存储过程中的参数视为命名参数并且搜索与之匹配的参数标记。

SQL SERVER.NET Framework Data Provider不支持使用问号标记(?)作为占位符来向SQL语句或者存储过程传递参数。既然如此,你必须命名参数,就下面一样:

OleDbCommand OdbcCommand中使用参数

OleDbCommand或者OdbcCommand中使用参数时,参数添加到Parameters集合中的顺序必须和存储过程中参数定义的顺序匹配。OLE DBODBC.NET Framework数据供应程序将存储过程的参数视为占位符,按照顺序来给参数赋值。另外,返回参数必须是第一个被加入到Parameters集合中的参数。

OLE DBODBC.NET Framework数据供应程序不提供使用命名参数来向SQL语句或存储过程传递参数。为此,你必须使用问号(?)占位符,就像下面一样:

因此,向 Parameters 集合添加 Parameter 对象的顺序必须直接对应于该参数的问号占位符的位置。

导出参数信息

参数也可以使用 CommandBuilder 类从存储过程导出。SqlCommandBuilder OleDbCommandBuilder 类都提供了静态方法 DeriveParameters,该静态方法将自动使用存储过程中的参数信息填充 Command 对象的 Parameters 集合。请注意,DeriveParameters 将改写 Command 的任何现有参数信息。

导出参数信息时需要经历一个到数据源的附加行程,以获取参数信息。如果参数信息在设计时是已知的,则可以通过显式设置参数来提高应用程序的性能。

以下代码示例显示如何使用 CommandBuilder.DeriveParameters 来填充 Command 对象的 Parameters 集合。

 

oracle PL/SQL 下用command Window执行procedure

http://blog.163.com/little_wind_585/blog/static/9820511520092535823460/
  • cnham
  • cnham
  • 2010年10月19日 17:52
  • 4839

使用SqlCommand对象执行存储过程

前面我们介绍使用 SqlCommand 执行一个参数化的SQL语句,现在我们来学习如何使用SqlCommand执行存储过程。为了能更灵活地指定参数,我们在页面上添加两个文本框,tbClassName ...
  • slobe
  • slobe
  • 2011年07月24日 16:29
  • 2364

PL/SQL Command Window的使用

个人对于工具的理解,只有真正熟悉了之后才会理解其强大。 1. 先谈一下诸 Window(PL/SQL Developer)     RT: PW(程序窗口): 可以执行 sql,sqlplus 相...
  • qq_24452475
  • qq_24452475
  • 2016年11月26日 16:06
  • 6668

CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)

上一篇:CYQ.Data 轻量数据层之路 使用篇四曲 MAction 增删改(十五)   本篇内容概要 Code highlighting produced by Actipro Code...
  • cyq1162
  • cyq1162
  • 2016年11月23日 12:07
  • 367

将存储过程用于命令

存储过程提供了数据驱动应用程序中的许多优点。利用存储过程,数据库操作可以封装在单个命令中,为获取最佳性能而进行优化并通过附加的安全性得到增强。虽然可以通过以 SQL 语句的形式传递参数自变量之前的存储...
  • ouyp0627
  • ouyp0627
  • 2007年06月14日 14:13
  • 451

c#之执行SQL存储过程

目的:通过C#.NET调用SQL Server数据库中定义的存储过程。 示例一: 存储过程名:sp_login 输入参数1:@username nvarchar(50) 输入参数2:@pass...
  • jerry_zjnb
  • jerry_zjnb
  • 2013年06月15日 17:41
  • 3508

基于C#中的类SqlCommand对象调用SQLServer存储过程时,存储过程执行成功,但是对象方法ExecuteNonQuery()返回-1

问题如题。 【下面是一个例子】 1、存储过程完成的功能是:插入insert一条记录,相同主键的记录存在时执行更新update的操作。存储过程正常执行的返回值是1.(不过本文提到的问题和这个返回值没...
  • wangx89
  • wangx89
  • 2015年11月25日 16:44
  • 1218

用 PLSQL command Window 执行 .sql 文件

用 PLSQL command Window 执行 .sql 文件
  • sinat_35626559
  • sinat_35626559
  • 2018年01月02日 14:16
  • 112

asp.net中使用带参数的存储过程

CREATE PROCEDURE spAddShoppingCart   @user_id varchar(50),   @title_id varchar(6)AS    Declare @Titl...
  • add8849
  • add8849
  • 2004年09月29日 09:19
  • 1054

oracle PLSQL创建和调用存储过程

我是在PLSQL的command window里使用的命令 建表  drop table students;  create table students(ID int,userName varc...
  • wojiuguowei
  • wojiuguowei
  • 2014年03月12日 15:24
  • 3408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Command执行存储过程
举报原因:
原因补充:

(最多只允许输入30个字)