ストレージ・プロシージャとSQL文の比較およびストレージ・プロシージャのC#での呼び出し方法
5482 ワード
SQL .NET , , , , , , , , 。
, :
--------
SQL
: SQL , 。
, SQL , SQL , , , , , , 。 SQL Nhibernate ORM , , , , 。
, , , 。 SQL , String SQL , 。
SQL , , 。Java SQL , 。
, , , Web Web , , , , , Web , , , , Web , , , , Web 。
, , , , , Web , 。 , , CUID ORM 。
。
1) , sql
2) , SQL
3) , SQL
,
, SQL ;
, , , , ;
: , ; , , , , 。
C#
====================================================
, .NET “ ” 。 , SqlServer , , 。 C# 。
, : SqlConnection, SqlCommand, SQL 。 , 。 , :
using System.Data.SqlClient。
, , DataAdapter DataSet , ; , , 。
(1) :
SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcedure";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
, 。
(2) ( ExeProcedure(string inputdate)):
SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcedure";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
( , )
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
。 :
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
:
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
, , ; , , 。 , ? , SqlServer “ ( )” , , ?
。 。 :
SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcedure(’para1’,’para2’,para3)";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
, , 。 , !
SQL Server 2005
RETURN 、 。 RETURN 。
RETURN , 、 。 RETURN , 0。
。 0。 。 :
USE AdventureWorks;
GO
-- Create a procedure that takes one input parameter
-- and returns one output parameter and a return code.
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
@MaxTotal INT OUTPUT
AS
-- Declare and initialize a variable to hold @@ERROR.
DECLARE @ErrorSave int;
SET @ErrorSave = 0;
-- Do a SELECT using the input parameter.
SELECT c.FirstName, c.LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE EmployeeID = @EmployeeIDParm;
-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR;
-- Set a value in the output parameter.
SELECT @MaxTotal = MAX(TotalDue)
FROM Sales.SalesOrderHeader;
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR;
-- Returns 0 if neither SELECT statement had
-- an error, otherwise returns the last error.
RETURN @ErrorSave;
GO
Transact-SQL :
DECLARE @ReturnStatus int;
DECLARE @MaxTotalVariable int;
DECLARE @MaxTotal int;
EXECUTE @ReturnStatus = SampleProcedure @EmployeeIDParm = 65 ,@MaxTotal = @MaxTotalVariable OUTPUT;
PRINT ' ';
PRINT 'Return code = ' + CAST(@ReturnStatus AS CHAR(10));
PRINT 'Maximum Order Total = ' + CAST(@MaxTotalVariable AS CHAR(15));
GO
。