1.存儲過程的創建
(輸入,輸出)
USE database_name
CREATE PROCEDURE procedure_name parameter_name data_type
--如果爲output ,要在後面 添加 output
With procedure_option --encryption 加密存儲過程的定義文本;recompile每次執行存儲過程時都重新編譯一次
AS
sql_string
for example:
//create procedure
Use Test
Create Procedure myPro
@num1 nvchar(10),
@num2 nvchar(10),
@out_num nvchar(10) output
AS
select *
from test
where num1=@num1 and num2=@num2
set @out_num=@num1+@num2 output
2.存儲過程的執行
//excute procedure
//直接提供參數,帶輸出
Use Test
Declare @out_num nvarchar(20) --必須聲明輸出參數
Exec myPro
'1231','121313',@out_num output
print @out_num
//間接提供參數,帶輸出
Use Test
Declare @num1 nvarchar(10)
Declare @num2 nvarchar(10)
Declare @out_num nvarchar(20)
Set @num1=''
Set @num2=''
Exec myPro @num1,@num2,@out_num output
print @out_num --輸出@out_num ,在消息裏顯示
3. 存儲過程的調用
SqlConnection con =new SqlConnection(Constr);
SqlCommand cmd=new SqlCommand();
SqlDataAdapter sda=new SqlDataAdapter();
DataSet ds=new DataSet();
cmd.Connection=con;
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText='procedure_name';
cmd.Parameters.Add("@parameter_name",SqlDbType.Int); //存儲過程輸入參數,參數類型
cmd.Parameters["@parameter_name"].Value=myvalue; //給輸入參數賦值
//輸出參數的設定
cmd.Parameters.Add("@out_name",SqlDbType.Int);
cmd.Parameters["@out_name"].Direction=ParameterDirection.Output;
cmd.ExcuteNonQuery();
sda.SelectCommand=cmd;
sda.Fill(ds);
(shining原創)