저장 프로세스 출력 매개 변수 호출

private void Form1_Load( object sender, EventArgs e) {
SqlParameter para = new SqlParameter( "@CardID" , SqlDbType.VarChar,20); // output
para.Direction = ParameterDirection.Output; //
object o = ProcOutput( "Proc_RandomCardIDSelect" , para, "@CardID" ); //
if (o == null || o.ToString() == "" )
{
textBoxCardID.Text = " " ;
}
else
{
textBoxCardID.Text = o.ToString();
}
}
///
/// Output
///
///
///
/// Output
///
public static object ProcOutput( string procName,SqlParameter para, string OutName)
{
string url = "server=.;database = BankATM;user id = sa;password = 132000OOO" ; //
SqlConnection conn = new SqlConnection(url); //
conn.Open(); //
//SqlCommand cmd = conn.CreateCommand();// T-Sql ,
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure; //
cmd.CommandText = procName; //
cmd.Parameters.Add(para); // para
int n = cmd.ExecuteNonQuery(); //
object o = cmd.Parameters[OutName].Value; // @CardID
conn.Close(); //
return o;
}
T-SQL Output -- , , ‘6222023xxxxxxxxxxxx’。 -- :Proc_RandomCardIDSelect IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME= 'Proc_RandomCardIDSelect' ) BEGIN DROP PROCEDURE Proc_RandomCardIDSelect END GO CREATE PROCEDURE Proc_RandomCardIDSelect ( @CARDID VARCHAR(20) OUTPUT -- OUTPUT ) AS DECLARE @MYCARD VARCHAR(20),@COUNT INT SET @MYCARD= '6222023' SET @COUNT = 0 WHILE(@COUNT < 9) BEGIN SET @MYCARD = @MYCARD + SUBSTRING(CONVERT(VARCHAR(20),RAND()),3,1) SET @COUNT = @COUNT + 1 END SET @CARDID = @MYCARD GO DECLARE @CARDID VARCHAR(20) EXEC Proc_RandomCardIDSelect @CARDID OUTPUT SELECT @CARDID
예2:
ASP로.NET와 SQL SERVER는 인연이 가장 좋다. 조금 큰 프로그램은 일반적으로 SQL SERVER를 먼저 고려하지만 경제적인 것을 고려하기 때문에 ACCESS 등을 사용한다.SQL SERVER를 사용하면 데이터베이스의 효율을 높이기 위해 일반적으로 저장 프로세스를 찾습니다. 저장 프로세스의 실행 속도가 빠르고 고급 조회 등 기능을 실현할 수 있기 때문입니다.예를 들어 일부 데이터 매개 변수를 전송하지만 SQL 프로세스가 다를 수 있습니다.
다음 예는 새로운 캐릭터를 만들고 캐릭터의 이름을 중복할 수 없도록 요구하는 것이다. 다음은 저장 과정이다.  
CREATE PROCEDURE sp_AccountRole_Create

@CategoryID int,
@RoleName nvarchar(10),
@Description nvarchar(50),
@RoleID int output
AS
   DECLARE @Count int

   --
   SELECT @Count = Count(RoleID) FROM Account_Role WHERE
       RoleName = @RoleName

   IF @Count = 0

       INSERT INTO Account_Role
       (CategoryID, RoleName, Description) valueS
       (@CategoryID, @RoleName, @Description)

       SET @RoleID = @@IDENTITY

       RETURN 1
GO


스토리지 프로세스에 대한 C# 프로세스를 수행합니다.
SqlConnection DbConnection = new SqlConnection(mConnectionString);
SqlCommand command = new SqlCommand( "sp_AccountRole_Create", DbConnection );
DbConnection.Open(connectString);
// SqlCommand
command.CommandType = CommandType.StoredProcedure;

command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
command.Parameters.Add("@Description", SqlDbType.NVarChar, 50);
command.Parameters.Add("@RoleID", SqlDbType.Int, 4);
//
command.Parameters.Add("Returnvalue",
           SqlDbType.Int,
           4,        // Size
           ParameterDirection.Returnvalue,
           false,        // is nullable
           0,        // byte precision
           0,        // byte scale
           string.Empty,
           DataRowVersion.Default,
           null );

command.parameters["@CategoryID"].value = permission.CategoryID;
command.parameters["@RoleName"].value = permission.PermissionName;
command.parameters["@Description"].value = permission.Description;
// ID
command.parameters["@RoleID"].Direction = ParameterDirection.Output;

int rowsAffected = command.ExecuteNonQuery();
int result = command.parameters["Returnvalue"].value;
int newID = command.parameters["@RoleID"].value;

좋은 웹페이지 즐겨찾기