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