精华内容
下载资源
问答
  • sqlserver存储过程
    千次阅读
    2022-02-09 17:51:38

    1.游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。

    以下是基本步伐: 不懂的问我

    • 定义,打开 ,使用,关闭,释放
    DECLARE @temp VARCHAR(12) -- 临时变量 
    declare product_cursor cursor for --定义游标
    select id from CheckInConfirmList where ParentID=@CheckInConfirmID
    open product_cursor -- 打开游标
    fetch product_cursor in variable;  -- 使用游标
    close product_cursor      -- 关闭游标
    DEALLOCATE product_cursor  --释放游标
    

    实例:

    ALTER PROCEDURE [dbo].[AAA-youbiao]
    AS
    BEGIN
    	 DECLARE @ProductName varchar(20),@BatchNum varchar(100)
    DECLARE cursor_name CURSOR FOR --定义游标
        SELECT TOP 10  ProductName,BatchNum from CheckInList
        ORDER BY batchNum DESC
    OPEN cursor_name --打开游标
    FETCH NEXT FROM cursor_name INTO  @ProductName,@BatchNum  --抓取下一行游标数据
    WHILE @@FETCH_STATUS = 0  --若抓取有效数据
        BEGIN
            PRINT '药品名:'+@ProductName+'            '+'流水号:'+@BatchNum  --打印
            FETCH NEXT FROM cursor_name INTO @ProductName,@BatchNum
        END
    CLOSE cursor_name --关闭游标
    DEALLOCATE cursor_name --释放游标
    END
    

    上一章内容:
    sqlserver存储过程入门?看不懂打死我

    更多相关内容
  • 主要介绍了Sql Server 存储过程调用存储过程接收输出参数返回值,需要的朋友可以参考下
  • 文档记录了SQL Server存储运用时的语法,需要有一定的SQL语言学习基本,本文档只是做了梳理与总结,以便查看和识记。
  • SQL存储过程习题,SQL触发器习题,SQL习题,基础语法,与W3School类似,初学者学习使用。
  • sqlserver存储过程

    2018-12-16 21:34:46
    sqlserver存储过程学习笔记,该文档详述存储过程的使用及和存储过程相关的一些SQLSERVER系统存储过程的用法及功能
  • SQL Server数据库中直接调用Web Service,不需要通过前台调用
  •  作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:  CREATE PROCEDURE GetContactFormalNames   AS  BEGIN  SELECT TOP 10 Title + "" "" + FirstName + "" "" + LastName ...
  • 可以将SQL Server存储过程转为oracle存储过程的工具
  • SQL Server存储过程加密与解密过程详解 加密概述 SQL Server的存储过程支持对其创建脚本的加密,即即便是数据库管理员也无法查看其脚本内容。本文即介绍一种方法对存储过程的加密和解密。 加密实例 加密存储过程...

    SQL Server存储过程加密与解密过程详解

    加密概述

    SQL Server的存储过程支持对其创建脚本的加密,即即便是数据库管理员也无法查看其脚本内容。本文即介绍一种方法对存储过程的加密和解密。

    加密实例

    加密存储过程

    创建示例加密存储过程见下(即加了WITH ENCRYPTION选项,脚本内容不可见):

    Create PROCEDURE usp_inlight
    WITH ENCRYPTION
    AS
    BEGIN
    	print 'Can not see me! 1 '
    	print 'Can not see me! 2 '
    	print 'Can not see me! 3 '
    	print 'Can not see me! 4'
    	print 'Can not see me! 5'
    	print 'Can not see me! 6'
    END   
    

    验证加密

    此时我们通过SQL Server Management Studio(SSMS)SQL Server图形化管理工具查看该存储过程时无法查看脚本内容,无法点击“修改”按钮。

    1)修改按钮灰色

    2)查看存储过程脚本

    解密

    解密需要SQL在专用管理员连接(Dedicated Admin Connection)DAC下运行,首先我们需要打开远程连接。

    指定远程连接DAC

    指定连接允许远程连接 DAC的模式,其中0是本地、1是可以远程。

    SP_CONFIGURE  'remote admin connections';
    SP_CONFIGURE 'remote admin connections', 1;
    GO
    RECONFIGURE WITH OVERRIDE;
    GO

    SSMS连接DAC

    不奏效方法:

    SSMS连接DAC时不能直接通过对象连接器直接进入该模式,详见如下演示步骤:

    正确方法:

    SSMS里正确连接DAC的方法,是先通过普通方式连接进去数据库,新建立个查询,然后在空白处右键“更改连接”,输入DAC模式的连接地址和用户登录信息。

    验证DAC连接

    在SSMS里执行如下查询,查看DAC连接会话信息。

    select 
    @@SPID spid,
    CASE
    WHEN es.session_id= @@SPID THEN 'you '
    ELSE es.host_name
    END AS DAC_runner,
    es.original_login_name,
    es.session_id,
    es.login_time,
    es.status
    from sys.endpoints as ep
    join sys.dm_exec_sessions es on
    ep.endpoint_id=es.endpoint_id
    where ep.name='Dedicated Admin Connection'
    

     

    创建解密存储过程 

    USE [ShenLiang2025]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    
    CREATE PROCEDURE [dbo].[usp_decrypt] 
    (@procedure  varchar(100)) 
    AS 
    SET NOCOUNT ON 
    DECLARE @intProcSpace bigint, @t bigint, @maxColID smallint,@procNameLength int 
    select @maxColID = max(subobjid) FROM 
    sys.sysobjvalues WHERE objid = object_id(@procedure) 
    --select @maxColID as 'Rows in sys.sysobjvalues' 
    select @procNameLength = datalength(@procedure) + 29 
    DECLARE @real_01 nvarchar(max) 
    DECLARE @fake_01 nvarchar(max) 
    DECLARE @fake_encrypt_01 nvarchar(max) 
    DECLARE @real_decrypt_01 nvarchar(max),@real_decrypt_01a nvarchar(max) 
    declare @objtype varchar(2),@parentname nvarchar(max) 
    select @real_decrypt_01a = '' 
    --提取对象的类型如是存储过程还是函数,如果是触发器,还要得到其父对象的名称 
    select @objtype=type,@parentname=object_name(parent_object_id) 
    from sys.objects where [object_id]=object_id(@procedure) 
    -- 从sys.sysobjvalues里提出加密的imageval记录 
    SET @real_01=(SELECT top 1 imageval FROM sys.sysobjvalues WHERE objid = 
    object_id(@procedure) and valclass = 1 order by subobjid) 
    --创建一个临时表 
    create table #output ( [ident] [int] IDENTITY (1, 1) NOT NULL , 
    [real_decrypt] NVARCHAR(MAX) ) 
    --开始一个事务,稍后回滚 
    BEGIN TRAN 
    --更改原始的存储过程,用短横线替换 
    if @objtype='P' 
      SET @fake_01='ALTER PROCEDURE '+ @procedure +' WITH ENCRYPTION AS 
      '+REPLICATE(cast('-'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength) 
    else if @objtype='FN' 
      SET @fake_01='ALTER FUNCTION '+ @procedure +'() RETURNS INT WITH ENCRYPTION AS BEGIN RETURN 1 
      /*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/ END' 
    else if @objtype='V' 
      SET @fake_01='ALTER view '+ @procedure +' WITH ENCRYPTION AS select 1 as col 
      /*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/' 
    else if @objtype='TR' 
      SET @fake_01='ALTER trigger '+ @procedure +' ON '+@parentname+'WITHENCRYPTION AFTER INSERT AS RAISERROR (''N'',16,10) 
      /*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/' 
    EXECUTE (@fake_01) 
    --从sys.sysobjvalues里提出加密的假的 
    SET @fake_encrypt_01=(SELECT top 1 imageval FROM sys.sysobjvalues WHERE objid = 
    object_id(@procedure) and valclass = 1 order by subobjid ) 
    if @objtype='P' 
      SET @fake_01='Create PROCEDURE '+ @procedure +' WITH ENCRYPTION AS 
      '+REPLICATE(cast('-'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength) 
    else if @objtype='FN' 
      SET @fake_01='CREATE FUNCTION '+ @procedure +'() RETURNS INT WITH ENCRYPTION AS BEGIN RETURN 1 
      /*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/ END' 
    else if @objtype='V' 
      SET @fake_01='Create view '+ @procedure +' WITH ENCRYPTION AS select 1 as col 
      /*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/' 
    else if @objtype='TR' 
      SET @fake_01='Create trigger '+ @procedure +' ON '+@parentname+'WITHENCRYPTION AFTER INSERT AS RAISERROR (''N'',16,10) 
      /*'+REPLICATE(cast('*'as nvarchar(max)), datalength(@real_01) /2 - @procNameLength)+'*/' 
    --开始计数 
    SET @intProcSpace=1 
    --使用字符填充临时变量 
    SET @real_decrypt_01 = replicate(cast('A'as nvarchar(max)), (datalength(@real_01) /2 )) 
    --循环设置每一个变量,创建真正的变量 
    --每次一个字节 
    SET @intProcSpace=1 
    --如有必要,遍历每个@real_xx变量并解密 
    WHILE @intProcSpace <=(datalength(@real_01)/2) 
    BEGIN 
    --真的和假的和加密的假的进行异或处理 
    SET @real_decrypt_01 = stuff(@real_decrypt_01, @intProcSpace, 1, 
    NCHAR(UNICODE(substring(@real_01, @intProcSpace, 1)) ^ 
    (UNICODE(substring(@fake_01, @intProcSpace, 1)) ^ 
    UNICODE(substring(@fake_encrypt_01, @intProcSpace, 1))))) 
    SET @intProcSpace=@intProcSpace+1 
    END 
    --通过sp_helptext逻辑向表#output里插入变量 
    insert #output (real_decrypt) select @real_decrypt_01 
    -- select real_decrypt AS '#output chek' from #output --测试 
    -- ------------------------------------- 
    --开始从sp_helptext提取 
    -- ------------------------------------- 
    declare @dbname sysname 
    ,@BlankSpaceAdded int 
    ,@BasePos int 
    ,@CurrentPos int 
    ,@TextLength int 
    ,@LineId int 
    ,@AddOnLen int 
    ,@LFCR int --回车换行的长度 
    ,@DefinedLength int 
    ,@SyscomText nvarchar(max) 
    ,@Line nvarchar(4000) 
    Select @DefinedLength = 4000 
    SELECT @BlankSpaceAdded = 0 --跟踪行结束的空格。注意Len函数忽略了多余的空格 
    CREATE TABLE #CommentText 
    (LineId int 
    ,Text nvarchar(4000) collate database_default) 
    --使用#output代替sys.sysobjvalues 
    DECLARE ms_crs_syscom CURSOR LOCAL 
    FOR SELECT real_decrypt from #output 
    ORDER BY ident 
    FOR READ ONLY 
    --获取文本 
    SELECT @LFCR = 2 
    SELECT @LineId = 1 
    OPEN ms_crs_syscom 
    FETCH NEXT FROM ms_crs_syscom into @SyscomText 
    WHILE @@fetch_status >= 0 
    BEGIN 
    SELECT @BasePos = 1 
    SELECT @CurrentPos = 1 
    SELECT @TextLength = LEN(@SyscomText) 
    WHILE @CurrentPos != 0 
    BEGIN 
    --通过回车查找行的结束 
    SELECT @CurrentPos = CHARINDEX(char(13)+char(10), @SyscomText, 
    @BasePos) 
    --如果找到回车 
    IF @CurrentPos != 0 
    BEGIN 
    --如果@Lines的长度的新值比设置的大就插入@Lines目前的内容并继续 
    While (isnull(LEN(@Line),0) + @BlankSpaceAdded + 
    @CurrentPos-@BasePos + @LFCR) > @DefinedLength 
    BEGIN 
    SELECT @AddOnLen = @DefinedLength-(isnull(LEN(@Line),0) + 
    @BlankSpaceAdded) 
    INSERT #CommentText VALUES 
    ( @LineId, 
    isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, 
    @BasePos, @AddOnLen), N'')) 
    SELECT @Line = NULL, @LineId = @LineId + 1, 
    @BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 0 
    END 
    SELECT @Line = isnull(@Line, N'') + 
    isnull(SUBSTRING(@SyscomText, @BasePos, @CurrentPos-@BasePos + @LFCR), N'') 
    SELECT @BasePos = @CurrentPos+2 
    INSERT #CommentText VALUES( @LineId, @Line ) 
    SELECT @LineId = @LineId + 1 
    SELECT @Line = NULL 
    END 
    ELSE 
    --如果回车没找到 
    BEGIN 
    IF @BasePos <= @TextLength 
    BEGIN 
    --如果@Lines长度的新值大于定义的长度 
    While (isnull(LEN(@Line),0) + @BlankSpaceAdded + 
    @TextLength-@BasePos+1 ) > @DefinedLength 
    BEGIN 
    SELECT @AddOnLen = @DefinedLength - 
    (isnull(LEN(@Line),0) + @BlankSpaceAdded) 
    INSERT #CommentText VALUES 
    ( @LineId, 
    isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, 
    @BasePos, @AddOnLen), N'')) 
    SELECT @Line = NULL, @LineId = @LineId + 1, 
    @BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 
    0 
    END 
    SELECT @Line = isnull(@Line, N'') + 
    isnull(SUBSTRING(@SyscomText, @BasePos, @TextLength-@BasePos+1 ), N'') 
    if LEN(@Line) < @DefinedLength and charindex(' ', 
    @SyscomText, @TextLength+1 ) > 0 
    BEGIN 
    SELECT @Line = @Line + ' ', @BlankSpaceAdded = 1 
    END 
    END 
    END 
    END 
    FETCH NEXT FROM ms_crs_syscom into @SyscomText 
    END 
    IF @Line is NOT NULL 
    INSERT #CommentText VALUES( @LineId, @Line ) 
    select Text from #CommentText order by LineId 
    CLOSE ms_crs_syscom 
    DEALLOCATE ms_crs_syscom 
    DROP TABLE #CommentText 
    -- ------------------------------------- 
    --结束从sp_helptext提取 
    -- ------------------------------------- 
    --删除用短横线创建的存储过程并重建原始的存储过程 
    ROLLBACK TRAN 
    DROP TABLE #output

     解密存储过程

    1) SSMS里执行存储过程实现解密

    exec dbo.usp_decrypt 'dbo.usp_inlight'

    得到解密后的存储过程文本并拷贝得到完整结果,见如下截图:

    2) SQLCMD里执行存储过程实现解密并将结果输出到文件里。

    sqlcmd -S localhost,1434 -U sa -P 'YoUrPassWd123' -d ShenLiang2025 -i '/home/shenliang2025/z.sql' -o result.txt

    展开全文
  • SQLSERVER存储过程例子

    2013-07-22 09:32:48
    SQLSERVER存储过程例子
  • 这个是用SQL server写的存储过程,搭配里面一张数据表使用,达到高并发情况下获得唯一订单号的目的;原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中...
  • SqlServer存储过程调用存储过程,如何接受返回值 关键代码: // eg:在@reArgs后面加OUTPUT接收GETPlace中的输出参数 EXEC GETPlace @str2, @reArgs OUTPUT 详细过程: Class表 创建两个存储过程,通过调用,...
    关键代码:

    // eg:在@reArgs后面加OUTPUT接收GETPlace中的输出参数

    EXEC GETPlace @str2, @reArgs OUTPUT
    
    详细过程:

    Class表

    创建两个存储过程,通过调用,实现输入课程名称、返回课程地点

    --创建存储过程1
    CREATE PROC GETPlace 
    @code nvarchar(50),
    @re nvarchar(50)='默认值' OUTPUT
    As 
    	BEGIN
    	SELECT @re=class_place  FROM Class
    	where class_code=@code
    	 print '[GETPlace]返回结果:@place='+@re
     END
     --创建存储过程2
     ALTER PROC [dbo].[GETNAME]
    @name nvarchar(36) ,  --输入参数
    @result nvarchar(50)='' OUTPUT	 --输出参数
    As 
    	DECLARE @str1 nvarchar(50)				--声明内部的局部变量
    	DECLARE @str2 nvarchar(50)='默认值'		--(1)声明并为局部变量赋值
    
    	SELECT @result=class_code  FROM Class		--(2)通过SELECT为参数赋值
    	where class_name=@name					--为参数赋值的SELECT与常规查询操作的SELECT不能同时进行
    	print '@result='+@result
    
    	SET @str2=@result						--(3)通过SET为参数赋值
    	print '@str2='+@str2
    
    	DECLARE @reArgs nvarchar(50)			--自定义参数,用来接收返回值
    	EXEC GETPlace @str2, @reArgs OUTPUT		--通过在参数后面加OUTPUT,来获取其他存储过程的输出参数(OUTPUT)
    	print '@reArgs='+@reArgs
    
    				                            --(4)调用带return的存储过程为参数赋值
    											--return 只能返回int类型   
    
    											--不能打印或return 未赋值的参数,否则报错
    
    --调用存储过程2
     EXEC GETNAME @name='数据库理论'
    --运行结果
    @result=s1003
    @str2=s1003
    [GETPlace]返回结果:@place=101202
    @reArgs=101202
    
    
    展开全文
  • SqlServer存储过程详解

    千次阅读 2021-03-13 22:57:22
    存储过程:        存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句进行缓存,这样下次执 行的时候直接使用缓存中的语句,这样就可以...

    存储过程:

           存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句进行缓存,这样下次执

    行的时候直接使用缓存中的语句,这样就可以提高存储过程的性能。

           一、存储过程的概念:

           存储过程(procedure)是一组为了完成特定功能的SQL语句集合 ,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。

           存储过程中可以包含逻辑控制语句和数据操纵语句(增删改查),它可以接受参数、输出参数、返回单个或多个结果集以及返回值。

           由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。

    同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。

           1、优点:

           ①通过把处理封装在简单易用的单元中,简化复杂的操作存储过程创建后可以在程序中被多次调用执行,而不必重新编写该

    存储过程的SQL语句。

           ②提高性能。使用存储过程比使用单独的SQL语句要快如果某一操作包含大量的SQL语句代码,分别被多次执行,那么存储

    过程要比批处理的执行速度快得多。

           ③安全,调用者只需要知道如何调用指定的存储过程即可,而不用关心存储过程的内容,防止SQL注入。

           ④存储过程减轻网络流量对于同一个针对数据库对象的操作,这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当

    在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负

    载。

           2、缺点:

           ①编写复杂。

           ②如果没有相应的权限,你将无法创建存储过程。

           ③当服务器调用过多存储过程,用户访问量大了,那么压力就丢给数据库来解决,数据库压力会过大。

           ④过多的存储过程,优化过于麻烦。


           二、系统存储过程:

           系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其

    他的系统管理任务。 系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。

           尽管这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建

    新的数据库的时候被自动创建在当前数据库中。

           常用系统存储过程有

    存储过程含义
    exec sp_databases;查看所有数据库
    exec sp_helpdb;查询数据库信息
    exec sp_helpdb 数据名;查询指定数据库信息
    exec sp_renamedb ‘旧库名’, ‘新库名’;更改数据库名称
    exec sp_tables;查询当前数据库的所有表
    exec sp_columns 表名;查看列
    exec sp_help 表名;返回表的所有信息
    exec sp_helpIndex 表名;查看索引
    exec sp_helpConstraint 表名;约束
    exec sp_stored_procedures;当前环境的所有存储
    exec sp_helptext ‘存储过程’;查看存储过程源码
    exec sp_rename ‘旧名’, ‘新名’;修改表、索引、列的名称
    exec sp_defaultdb ‘旧库名’, ‘新库名’;更改登录名的默认数据库

    注意:exec 用于调用存储过程

     系统存储过程示例:

     ①表重命名语法:

    exec sp_rename 'stu', 'stud';
    

     ②列重命名语法:

    exec sp_rename '表名.旧列名', '新列名','column';
    

     ③重命名索引语法:

    exec sp_rename N'student.idx_cid',N'idx_cidd', N'index';
    

     ④查询所有存储过程语法:

     补充: P 为 “存储过程”

    select * from sys.objects where type = 'P';
    

           三、自定义存储过程:

       1、创建语法:

    create proc | procedure 存储名(
      [{@参数 数据类型} [=默认值] [out|output],
       {@参数 数据类型} [=默认值] [out|output],
      ....]
    )
    as
    begin
       SQL_statements
    end
    go
    

    注意:

    默认不写是输入变量;

    out输出变量;

    output输入输出变量;

    参数可以写小括号中,如果没有参数,小括号可以省略不写;

       2、修改语法:

    alter proc | procedure 存储过程名
    as
    beign
       sql语句;
    end
    

       3、删除语法:

    drop proc | procedure 存储过程名;
    

       4、调用语法:

    ** 不带参数的

    exec 存储过程名;
    

    ** 带参数的

    exec 存储过程名 参数1 out|output,参数2 out|output;
    
    展开全文
  • 执行Sqlserver存储过程返回DataSet

    热门讨论 2012-03-09 10:15:35
    执行Sqlserver存储过程返回DataSet
  • Sql Server 存储过程及游标

    千次阅读 2020-10-20 15:51:35
    存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回...
  • oracle到sqlserver存储过程语法转换

    热门讨论 2011-10-13 09:34:29
    oracle到sqlserver 存储过程语法转换,希望对大家有帮助啊! 最近刚把oracle的数据库移植到sqlserver
  • SQLSERVER存储过程语法详解

    万次阅读 2018-09-01 11:36:13
    1 ...SQLServer 存储过程中不拼接SQL字符串实现多条件查询  以前拼接的写法  set @sql=' select * from table where 1=1 '  if (@addDate is not null)   set @sql = @sql+' ...
  • Sqlserver存储过程与xml编程,Sqlserver存储过程与xml编程,Sqlserver存储过程与xml编程
  • sqlserver存储过程解密工具
  • 本机的navcat第一次链接远程sqlserver,需安装sqlncli_x64.msi软件网上有的是之后就可以打开链接了 点击函数新建 不用写名字 选中过程点击完成 这个地方改成自己的名字(用这种方式取名是为了方便理解,避免自动...
  • SQL Server 存储过程SQL语句的拼接

    千次阅读 2020-12-26 17:11:27
    SQL Server 存储过程SQL语句的拼接
  • sqlserver存储过程和触发器

    千次阅读 2019-01-17 11:57:53
    sqlserver存储过程和触发器 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。 存储过程的特点,触发器和存储过程的区别,触发器的优点...
  • sqlserver 存储过程的使用

    万次阅读 2019-12-29 22:12:58
    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。...
  • SqlServer存储过程中循环的使用

    千次阅读 2020-04-01 11:17:58
    所以在存储过程中使用游标时,为了更加安全的执行,应该先判断游标是否存在,这个sqlserver数据库已内置一个函数帮助我们确认游标的状态。详细如下: 检查游标的状态: CURSOR_STATUS('global','')=1 THEN '游标的...
  • SQLServer存储过程之异常处理

    千次阅读 2020-09-24 10:56:18
    简介 ...下面,我就以一个插入数据为例来说明Sql Server中的存储过程怎么捕获异常的 。 1、环境 (1)数据库为Sql Server2008。 (2)表(Course)结构为: No char(10) primary key Name varchar
  • sql server存储过程基本写法

    千次阅读 多人点赞 2020-09-27 19:59:20
    sql server存储过程的优点 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对...
  • 使用存储过程利用临时表循环实现多表修改update CREATE PROCEDURE [dbo].[UP_Pack_Detail_Update] ( @Types varchar(100) = NULL ) AS SET XACT_ABORT ON## 标题 BEGIN TRAN --构建临时表 SELECT ROW_NUMBER() ...
  • SQL server存储过程:数据的插入和更新 存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层, 接下来就一个小例子来说明,用存储过程插入或更新语句。 1、数据库表结构 2、创建存储过程 (1)实现功能: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 347,490
精华内容 138,996
关键字:

sqlserver存储过程

友情链接: wenducanshunihe.rar