저장 프로세스 출력 매개 변수 호출
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;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
wince 레지스트리 관련 토론2) 다른 메커니즘은 이전 메커니즘의 두 번의 가동이 필요한 단점을 피할 수 있다.하지만 단점도 있다.OEM(원시 장치 제조업체)은 OAL 레이어에서 Write Registry ToOEM and ReadRegistr...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.