存儲過程學習日記

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原創)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章