在Net下调用SqlServer2k中存储过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Net下调用SqlServer2k中存储过程相关的知识,希望对你有一定的参考价值。
.Net下调用SqlServer2k中存储过程.Net下调用SqlServer2k中存储过程
首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,
先就简单的没有参数的情况简要的介绍:先就简单的没有参数的情况简要的介绍:
假设存储过程如下:
CREATE
PROC
SelectAll假设存储过程如下:
CREATE
PROC
SelectAll
AS
AS
SELECT
*
FROM
StudentInf
SELECT
*
FROM
StudentInf
则此sp的调用如下:则此sp的调用如下:
SqlCommand
selectCMD
=
new
SqlCommand(“SelectAll”,
conn);
SqlCommand
selectCMD
=
new
SqlCommand(“SelectAll”,
conn);
//conn
为SqlConnection
//conn为SqlConnection
selectCMD.CommandType
=
CommandType.StoredProcedure;
selectCMD.CommandType
=
CommandType.StoredProcedure;
如果需要将结果集加到某个DataAdapter上,则可如下:如果需要将结果集加到某个DataAdapter上,则可如下:
SqlDataAdapter
stuDA
=
new
SqlDataAdapter();
SqlDataAdapter
stuDA
=
new
SqlDataAdapter();
stuDa.SelectCommand
=
selectCMD;
stuDa.SelectCommand
=
selectCMD;
如果有参数:create
proc
andSelect如果有参数:create
proc
andSelect
@StudentId
varchar(10),
@StudentId
varchar(10),
@StudentName
varchar(10),
@StudentName
varchar(10),
As
As
Select
*
from
StudentInf
where
StudentId
=
@StudentId
and
StudentName
=
@StudentName
Select
*
from
StudentInf
where
StudentId
=
@StudentId
and
StudentName
=
@StudentName
则参数可以如下添加:则参数可以如下添加:
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
selectCMD.Parameters.Add(
“@StudentName
”,
SqlDbType.NvarChar,
10);
selectCMD.Parameters.Add(
“@StudentName
”,
SqlDbType.NvarChar,
10);
如果只有一个参数,也可以这样赋值:如果只有一个参数,也可以这样赋值:
SqlParameters
onePara
=
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
SqlParameters
onePara
=
selectCMD.Parameters.Add(
“@StudentId
”,
SqlDbType.NVarChar,
10);
onePara.Value
=
“
a
string
”
onePara.Value
=
“
a
string
” 参考技术A 首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,
先就简单的没有参数的情况简要的介绍:
假设存储过程如下:
CREATE
PROC
SelectAll
AS
SELECT
*
FROM
StudentInf
则此sp的调用如下:
SqlCommand
selectCMD
=
new
SqlCommand(“SelectAll”,
conn);
//conn
为SqlConnection
selectCMD.CommandType
=
CommandType.StoredProcedure;
如果需要将结果集加到某个DataAdapter上,则可如下:
SqlDataAdapter
stuDA
=
new
SqlDataAdapter();
stuDa.SelectCommand
=
selectCMD;
如果有参数:create
proc
andSelect
@StudentId
varchar(10),
@StudentName
varchar(10),
As
Select
*
from
StudentInf
where
StudentId
=
@StudentId
and
StudentName
=
@StudentName
则参数可以如下添加:
selectCMD.Parameters.Add(“@StudentId”,
SqlDbType.NVarChar,
10);
selectCMD.Parameters.Add(“@StudentName”,
SqlDbType.NvarChar,
10);
如果只有一个参数,也可以这样赋值:
SqlParameters
onePara
=
selectCMD.Parameters.Add(“@StudentId”,
SqlDbType.NVarChar,
10);
onePara.Value
=
“
a
string
”本回答被提问者采纳
求助,sqlserver2005存储过程如何返回这样的结果集
参考技术A 部署CLR存储过程上面的示例代码需要进行编译才能通过存储过程来调用。在命令行中执行下面的命令来编译这些代码并创建类库DLL MSSQLTipsCLRLib.dll:
CSC/target:libraryStoredProcedures.cs/out:MSSQLTipsCLRLib.dll
假设你使用的是Microsoft .NET框架的第二版本,那么你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下看到CSC.EXE。
执行下面的T-SQL脚本来创建这个存储过程:
ALTERDATABASEmssqltips
SETTRUSTWORTHYON GO USEmssqltips GO CREATEASSEMBLYMSSQLTipsCLRLib
FROM'C:\mssqltips\MSSQLTipsCLRLib.dll'
WITHPERMISSION_SET=EXTERNAL_ACCESS GO CREATEPROCEDUREdbo.GetListOfFiles
@pathNVARCHAR(256)
,@patternNVARCHAR(64)
,@recursiveBIT AS EXTERNALNAMEMSSQLTipsCLRLib.StoredProcedures.GetListOfFiles
在编译了这个代码到类库(.dll)之后,CREATE ASSEMBLY命令就被执行了,它将这个DLL与ASSEMBLY数据库对象关联起来。FROM条件从句必须指向DLL的实际路径。PERMISSION_SET必须设置为EXTERNAL_ACCESS,因为.NET代码将访问SQL Server 之外的文件系统。TRUSTWORTHY选项被设置为on,以允许外部访问。最后,CREATE PROCEDURE命令的EXTERNAME NAME将这个集合、类和函数与这个存储过程名称关联起来。
要执行这个存储过程,执行下面的脚本:
EXECdbo.GetListOfFiles'C:\mssqltips','*.*',0
你将看到类似于下面的输出,这取决于你选择的文件夹的内容;例如,一个只有一列、每一行是一个文件的结果集: 图2 接下来的步骤
在这里下载示例脚本并执行从一个CLR存储过程返回结果集。
记住,当在Microsoft .NET框架中有满足你需求的函数时,使用SQL Server的CLR可能是个很好的解决方法。
以上是关于在Net下调用SqlServer2k中存储过程的主要内容,如果未能解决你的问题,请参考以下文章
求助,sqlserver2005存储过程如何返回这样的结果集
ADO.NET 调用 T-SQL 存储过程会导致 SqlTimeoutException
Asp.net(C#) 获取 执行sql server 语句/存储过程后的 多个返回值?