用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
asdeclare @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();
下面就來個例子,建立一新的角色,要求角色的名字不能重複,以下是一儲存過程。
create procedure sp_accountrole_create
@categoryid int,
@rolename nvarchar(10),
@description nvarchar(50),
@roleid int output
asdeclare @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);功能挺強的吧,可以得到三個值,分別是行影響值,儲存過程返回值,新的id值。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;
儲存過程三個例子
例項1 統計每年入職的員工個數。可能sql select to char hiredate,yyyy from emp set serveroutput on declare cursor cemp is select to char hiredate,yyyy from emp phiredate...
淺淡站長軟文寫作的三個過程
這個標題寫的有點大,看了一下百科以及相關的書,很多的知識可以進行學習,但站長們如何來給我們的 進行內容填充了,有這麼乙個現象 很多站長寧願花大量的時間去優化 去寫採集演算法,也不願意進行軟文寫作,現在搜尋引擎的演算法越來越強大,如果站長你還不去學會軟文寫作的程式設計客棧話,還天天去採集,那麼最終你會...
得到帳單號碼儲存過程
create procedure dbo.st intelink temp getinvno20070809 得到帳單號碼 clno varchar 20 way bit,mani id varchar 30 output,comnetwork varchar 5 asdeclare i int d...