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

    sqlserver存储过程入门

    1. 输入/输出参数定义

    @object_name varchar(50)  //定义一个varchar类型的输入参数
    @object_index int
    @isUpdate int  =0  output //定义一个输出参数
    

    2.游标使用步骤

    1、定义游标
    DECLARE cur_objsName CURSOR for select name from tb_user;
    2、打开游标
    OPEN cur_objsName;
    3、提取游标数据,进行业务处理
    while @@fetch_status = 0   --如果上一次操作成功则继续循环  
    	begin
    		update tb_user set calss='三年级5班' 	
    		FETCH  NEXT FROM cur_objsName INTO 	
    	end
    4、关闭游标
    CLOSE cur_objsName;
    5、释放游标
    deallocate cur_objsName;
    

    3.简单示例

    生产环境中会需要对软件的版本进行升级,会相应的升级数据库。当老版本软件退役,新版本软件上线时。会根据数据表结构的更新来进行数据迁移。
    示例:根据输入对象名称,和列名,判断表对象结构是否进行了更新
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	判断表对象结构是否进行了更新
    -- =============================================
    alter PROCEDURE [dbo].[getIsUpdate]
    	@object_name varchar(50),
    	@contrast_column_name varchar(50),
    	@isUpdate int  =0  output           -- 1= 是, 0=否
    AS 
    BEGIN
    	-----------定义游标----------------
    	DECLARE cur_objsName CURSOR for select name from sys.all_columns where object_id = object_id(@object_name);
    	declare @column_name varchar(50)  
    -----------打开游标----------------
    	OPEN cur_objsName;
    -----------------从游标里取出数据赋值到我们刚才声明的变量中(移动游标指向到第一条数据,提取第一条数据存放在变量中)    
    	FETCH NEXT FROM cur_objsName INTO @column_name   
    --判断游标的状态    
    -- 0 fetch语句成功        
    ---1 fetch语句失败或此行不在结果集中        
    ---2 被提取的行不存在  
    	while @@fetch_status = 0   --如果上一次操作成功则继续循环  
    		begin
    			if @contrast_column_name=@column_name
    				set @isUpdate =1
    			FETCH  NEXT FROM cur_objsName INTO @column_name	
    		end
    END
    -----------关闭游标----------------
    	CLOSE cur_objsName;
    -----------释放游标----------------
    	deallocate cur_objsName;
    

    3.1SQLserver2005企业管理器中执行存储过程

    1、执行存储过程

    2、填写输入参数

    3、查看查询结果

    4.powerbuilder中调用存储过程

    int returnValue
    Declare stu_getIsUpdate Procedure For getIsUpdate // 定义过程调用
    @object_name='tb_user',  @contrast_column_name='faction',   
    @isUpdate=0 output;
    Execute stu_getIsUpdate ;// 执行过程,这里是不需要其他参数的
    
    If SQLCA.SQLCode <> 0 Then // 调用过程出现错误处理
    	messagebox('提示','数据库升级时出现错误:getIsUpdate........')
    	return
    End If
    Fetch stu_getIsUpdate Into :returnValue;
    // 获取出参值,也就是OUT的变量,如果没有out类型的变量,这句也就不需要了
    If SQLCA.SQLCode <> 0 Then // 获取数据出现错误处理
    	messagebox('提示','数据库升级时出现错误:getIsUpdate........')
    	return
    End If
    Close stu_getIsUpdate ;	
    if  returnValue=0 then
    	//根据存储过程返回值,来执行相应业务逻辑
    end if
    

    5.使用Visual Studio 进行存储过程的调试

    1、打开visual studio 2013,单击“视图”,选择“服务器资源管理器”。

    2、右键单击“数据连接”,选择“添加连接”

    3、在弹出的窗口中选择“Microsoft SQL Server”或者“Microsoft SQL Server数据库文件”

    4、在第三步基础上进行配置,这一步根据第三步选择选项不同,进行配置的内容不同,但都比较简单,不做描述。

    5、添加连接完成之后,点击“存储过程”,选择你要调试的存储过程,右键单击,选择“执行”,在弹出窗口中输入相应参数(如果有的话)

    6、在打开的选项卡窗口中点击绿色按钮右边的下拉按钮,选择“使用调试器执行”,开始调试。

    7、调试时,可以按F11或者F10进行步进或者过程进,进行调试,调试时把鼠标放到变量上即可查看变量的值

    简单示例

    5.欢迎关注微信公众号

  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/mark-0001/p/11551360.html
Copyright © 2011-2022 走看看