sql 存储过程

1  好久没写存储过程啦 突然记不清晰,,写个最简单的试试

create proc test
as
begin
select * from classes
end

exec test

 

1 带输出参数的存储过程

例如:

 


create  proc testproc
(
@ids int,
@count int out
)
AS
begin
update students  set seecount=seecount+1 where id=@ids;
select @count=seecount from  students where id=@ids;
end

 

declare @count int
exec testproc  301,@count output
select @count

 

 c#  代码:

 public int testbystr(int id)
        {
            SqlParameter[] param = new SqlParameter[2];
            param[0]=new SqlParameter("@ids",SqlDbType.Int,id);
            param[1] = new SqlParameter("@count", SqlDbType.VarChar,30);
            param[1].Direction=ParameterDirection.Output;
            DbHelperSQL.RunProcedure("testproc",param);
            return int.Parse(param[1].Value.ToString());
            
        }

 

其中可能出现一下错误

string[1] size 属性就有无效大小值0

 

需要注意这个:    param[1] = new SqlParameter("@count", SqlDbType.VarChar,30);

 

Output 和returnValue 是有区别的。

 

 

带输入参数和输出参数的存储过程是怎么回事 ?

参数模式共分为三种: IN模式、OUT模式、IN OUT模式
       其中:
              IN模式:可以在函数中接收用户传入的参数值,其为单向的值传递。
              OUT模式:不可以为函数传入参数值,但其可以作为函数的返回值,类似C中的传址(其不可以作为函数的输入参数,只能作为输出参数)
              IN OUT模式:即可以作为函数的输入函数,又可以作为函数的输出参数,同C中的传址。
举例:
-- OUT模式CREATE OR REPLACE FUNCTION f_outparmtest (sid in number, sname out varchar2, sage out number)RETURN boolean
IS      
    result boolean := true;
BEGIN      
    SELECT stuname, age INTO sname, sage FROM student WHERE stuid = sid;      
    RETURN result;
EXCEPTION       WHEN others THEN           
    RETURN false;
END;  

-- IN OUT模式,交换两个变量值CREATE OR REPLACE FUNCTION f_swap (n1 in out number, n2 in out number)RETURN boolean
IS       temp number;      
    result boolean := true;
BEGIN       temp := n1;       n1 := n2;       n2 := temp;      
    RETURN result;
END;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值