zoukankan      html  css  js  c++  java
  • 存储过程

    存储过程必须是批处理中仅有的语句

    语法:

    Go   

    create  Procedure  存储过程名

       @参数名  参数类型(int,string...)

       as

           if(@参数名)

               select @参数名=count(*) from 表名  where  ...

            else

                set @参数名=1000

     Go

    1.只返回单一记录集的存储过程

    create Procedure GetUserAccount
    as
    select * from UserAccount
    go
    
    -------------执行上面的存储过程----------------
    exec GetUserAccount
    
    --相当于执行了select 语句,返回数据集

    2、没有输入输出的存储过程

    create Procedure inUserAccount
    as
    insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9)
    go
    
    -------------执行上面的存储过程----------------
    
    exec inUserAccount
    --修改和插入都只是执行操作,不会返回任何数据

    3、有返回值的存储过程

    create Procedure inUserAccountRe
    as
    insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(10,10,'2013-01-02',10)
    return @@rowcount
    go
    
    -------------执行上面的存储过程----------------
    
    exec inUserAccountRe
    --返回执行多少行

    4、有输入输出参数的存储过程

    create Procedure GetUserAccountRe
    @UserName nchar(20),
    @UserID int output
    as
    if(@UserName>5)
    select @UserID=COUNT(*) from UserAccount where UserID>25
    else
    set @UserID=1000
    go
    
    -------------执行上面的存储过程----------------
    
    exec GetUserAccountRe '7',null

    5、同时具有返回值、输入参数、输出参数的存储过程

    create Procedure GetUserAccountRe1
    @UserName nchar(20),
    @UserID int output
    as
    if(@UserName>5)
    select @UserID=COUNT(*) from UserAccount where UserID>25
    else
    set @UserID=1000
    return @@rowcount
    go
    
    exec GetUserAccountRel '7' ,null

    6、同时返回参数和记录集的存储过程

    create Procedure GetUserAccountRe2
    @UserName nchar(20),
    @UserID int output
    as
    if(@UserName>5)
    select @UserID=COUNT(*) from UserAccount where UserID>25
    else
    set @UserID=1000
    select * from UserAccount
    return @@rowcount
    go

    7、返回多个记录集的存储过程

    create Procedure GetUserAccountRe3
    as
    select * from UserAccount
    select * from UserAccount where UserID>5
    go
    
    -------------执行上面的存储过程----------------
    
    exec GetUserAccountRe3

    后台调用存储过程的代码  (仅作为参考)

     //同时具有返回值、输入参数、输出参数的存储过程GetUserAccountRe1
            public void runGetUserAccountRe1()
            {
                SqlCommand cmd = common("GetUserAccountRe1");
                // 创建参数 
                IDataParameter[] parameters = { 
                     new SqlParameter("@UserName", SqlDbType.NChar,20) , 
                     new SqlParameter("@UserID", SqlDbType.Int) ,
                     new SqlParameter("rval", SqlDbType.Int,4) 
                 };
                // 设置参数类型 
                parameters[0].Value = "7";
                parameters[1].Direction = ParameterDirection.Output;  // 设置为输出参数 
                parameters[2].Direction = ParameterDirection.ReturnValue;  //设置为返回值
                // 添加参数 
                cmd.Parameters.Add(parameters[0]);
                cmd.Parameters.Add(parameters[1]);
                cmd.Parameters.Add(parameters[2]);
                con.Open();
                // 执行存储过程并返回影响的行数 
                Label1.Text = cmd.ExecuteNonQuery().ToString();
                con.Close();
                // 显示影响的行数和输出参数 
                Label1.Text += "-输出参数为:" + parameters[1].Value.ToString();
                Label1.Text += "-返回值为:" + parameters[2].Value.ToString();
    
            }

    引用地址:http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html

  • 相关阅读:
    web.xml中load-on-startup的作用
    Spring加载resource时classpath*:与classpath:的区别
    免费svn远程仓库推荐
    学习websocket
    eclipse下的maven
    maven常用命令
    文件操作的补充
    模块
    正则表达式,计算器,装饰器,冒泡排序,用户登录系统
    拷贝,集合,函数,enumerate,内置函数
  • 原文地址:https://www.cnblogs.com/zmztya/p/5329494.html
Copyright © 2011-2022 走看看