精华内容
下载资源
问答
  • sql 存储过程

    千次阅读 多人点赞 2013-02-14 18:37:00
    sql 存储过程 2013-02-14 18:37 by swarb, ... 阅读, ... 评论, 收藏, 编辑 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样...

    sql 存储过程

    2013-02-14 18:37 by swarb, ... 阅读, ... 评论, 收藏, 编辑

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。

    Ø 存储过程的概念

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

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

        由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。

     

        1、 存储过程的优点

            A、 存储过程允许标准组件式编程

            存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。

            B、 存储过程能够实现较快的执行速度

            如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。

            C、 存储过程减轻网络流量

            对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。

            D、 存储过程可被作为一种安全机制来充分利用

            系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。

     

    Ø 系统存储过程

        系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。尽管这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。

        常用系统存储过程有:

    exec sp_databases; --查看数据库
    exec sp_tables;        --查看表
    exec sp_columns student;--查看列
    exec sp_helpIndex student;--查看索引
    exec sp_helpConstraint student;--约束
    exec sp_stored_procedures;
    exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
    exec sp_rename student, stuInfo;--修改表、索引、列的名称
    exec sp_renamedb myTempDB, myDB;--更改数据库名称
    exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
    exec sp_helpdb;--数据库帮助,查询数据库信息
    exec sp_helpdb master;

        系统存储过程示例:
    --表重命名
    exec sp_rename 'stu', 'stud';
    select * from stud;
    --列重命名
    exec sp_rename 'stud.name', 'sName', 'column';
    exec sp_help 'stud';
    --重命名索引
    exec sp_rename N'student.idx_cid', N'idx_cidd', N'index';
    exec sp_help 'student';
    
    --查询所有存储过程
    select * from sys.objects where type = 'P';
    select * from sys.objects where type_desc like '%pro%' and name like 'sp%';

     

    Ø 用户自定义存储过程

       1、 创建语法

    create proc | procedure pro_name
        [{@参数数据类型} [=默认值] [output],
         {@参数数据类型} [=默认值] [output],
         ....
        ]
    as
        SQL_statements

     

       2、 创建不带参数存储过程

    --创建存储过程
    if (exists (select * from sys.objects where name = 'proc_get_student'))
        drop proc proc_get_student
    go
    create proc proc_get_student
    as
        select * from student;
    
    --调用、执行存储过程
    exec proc_get_student;

       3、 修改存储过程

    --修改存储过程
    alter proc proc_get_student
    as
    select * from student;

       4、 带参存储过程

    --带参存储过程
    if (object_id('proc_find_stu', 'P') is not null)
        drop proc proc_find_stu
    go
    create proc proc_find_stu(@startId int, @endId int)
    as
        select * from student where id between @startId and @endId
    go
    
    exec proc_find_stu 2, 4;

       5、 带通配符参数存储过程

    --带通配符参数存储过程
    if (object_id('proc_findStudentByName', 'P') is not null)
        drop proc proc_findStudentByName
    go
    create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%')
    as
        select * from student where name like @name and name like @nextName;
    go
    
    exec proc_findStudentByName;
    exec proc_findStudentByName '%o%', 't%';

       6、 带输出参数存储过程

    if (object_id('proc_getStudentRecord', 'P') is not null)
        drop proc proc_getStudentRecord
    go
    create proc proc_getStudentRecord(
        @id int, --默认输入参数
        @name varchar(20) out, --输出参数
        @age varchar(20) output--输入输出参数
    )
    as
        select @name = name, @age = age  from student where id = @id and sex = @age;
    go
    
    -- 
    declare @id int,
            @name varchar(20),
            @temp varchar(20);
    set @id = 7; 
    set @temp = 1;
    exec proc_getStudentRecord @id, @name out, @temp output;
    select @name, @temp;
    print @name + '#' + @temp;


       7、 不缓存存储过程

    --WITH RECOMPILE 不缓存
    if (object_id('proc_temp', 'P') is not null)
        drop proc proc_temp
    go
    create proc proc_temp
    with recompile
    as
        select * from student;
    go
    
    exec proc_temp;

       8、 加密存储过程

    --加密WITH ENCRYPTION 
    if (object_id('proc_temp_encryption', 'P') is not null)
        drop proc proc_temp_encryption
    go
    create proc proc_temp_encryption
    with encryption
    as
        select * from student;
    go
    
    exec proc_temp_encryption;
    exec sp_helptext 'proc_temp';
    exec sp_helptext 'proc_temp_encryption';

       9、 带游标参数存储过程

    if (object_id('proc_cursor', 'P') is not null)
        drop proc proc_cursor
    go
    create proc proc_cursor
        @cur cursor varying output
    as
        set @cur = cursor forward_only static for
        select id, name, age from student;
        open @cur;
    go
    --调用
    declare @exec_cur cursor;
    declare @id int,
            @name varchar(20),
            @age int;
    exec proc_cursor @cur = @exec_cur output;--调用存储过程
    fetch next from @exec_cur into @id, @name, @age;
    while (@@fetch_status = 0)
    begin
        fetch next from @exec_cur into @id, @name, @age;
        print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);
    end
    close @exec_cur;
    deallocate @exec_cur;--删除游标


       10、 分页存储过程

    ---存储过程、row_number完成分页
    if (object_id('pro_page', 'P') is not null)
        drop proc proc_cursor
    go
    create proc pro_page
        @startIndex int,
        @endIndex int
    as
        select count(*) from product
    ;    
        select * from (
            select row_number() over(order by pid) as rowId, * from product 
        ) temp
        where temp.rowId between @startIndex and @endIndex
    go
    --drop proc pro_page
    exec pro_page 1, 4
    --
    --分页存储过程
    if (object_id('pro_page', 'P') is not null)
        drop proc pro_stu
    go
    create procedure pro_stu(
        @pageIndex int,
        @pageSize int
    )
    as
        declare @startRow int, @endRow int
        set @startRow = (@pageIndex - 1) * @pageSize +1
        set @endRow = @startRow + @pageSize -1
        select * from (
            select *, row_number() over (order by id asc) as number from student 
        ) t
        where t.number between @startRow and @endRow;
    
    exec pro_stu 2, 2;
    


    Ø Raiserror

    Raiserror返回用户定义的错误信息,可以指定严重级别,设置系统变量记录所发生的错误。

       语法如下:

    Raiserror({msg_id | msg_str | @local_variable}
      {, severity, state}
      [,argument[,…n]]
      [with option[,…n]]
    )

       # msg_id:在sysmessages系统表中指定的用户定义错误信息

       # msg_str:用户定义的信息,信息最大长度在2047个字符。

       # severity:用户定义与该消息关联的严重级别。当使用msg_id引发使用sp_addmessage创建的用户定义消息时,raiserror上指定严重性将覆盖sp_addmessage中定义的严重性。

        任何用户可以指定0-18直接的严重级别。只有sysadmin固定服务器角色常用或具有alter trace权限的用户才能指定19-25直接的严重级别。19-25之间的安全级别需要使用with log选项。

       # state:介于1至127直接的任何整数。State默认值是1。

    raiserror('is error', 16, 1);
    select * from sys.messages;
    --使用sysmessages中定义的消息
    raiserror(33003, 16, 1);
    raiserror(33006, 16, 1);

     

    展开全文
  • SQL存储过程使用介绍

    万次阅读 多人点赞 2017-04-25 13:54:13
    在数据库编程过程中经常会用到存储过程 , 相比 SQL 语句 , 存储过程更方便 , 快速 , 安全 ; 先将存储过程的相关介绍和使用方法总结如下 ;1. 存储过程的概念存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组...

    在数据库编程过程中经常会用到存储过程 , 相比 SQL 语句 , 存储过程更方便 , 快速 , 安全 ; 先将存储过程的相关介绍和使用方法总结如下 ;

    1. 存储过程的概念

    存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数) 来执行它 , 存储过程是数据库中的一个重要对象 ; 存储过程中可以包含 逻辑控制语句数据操纵语句 , 它可以接受参数 , 输出参数 , 返回单个或多个结果集以及返回值 ;


    2. 存储过程的优缺点

    优点 :

    1. 由于应用程序随着时间推移会不断更改 , 增删功能 , SQL 语句会变得更复杂 , 存储过程为封装此类代码提供了一个替换位置 ;
    2. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中 , 所以存储过程运行要比单个的 SQL 语句块要快 ;
    3. 由于在调用时只需用提供存储过程名和必要的参数信息 , 所以在一定程度上也可以减少网络流量 , 简单网络负担 ;
    4. 可维护性高 , 更新存储过程通常比更改 , 测试以及重新部署程序集需要较少的时间和精力 ;
    5. 代码精简一致 , 一个存储过程可以用于应用程序代码的不同位置 ;
    6. 增强安全性 :
      • 通过向用户授予对存储过程 (而不是基于表) 的访问权限 , 它们可以提供对特定数据的访问 ;
      • 提高代码安全 , 防止 SQL注入 (但未彻底解决 , 例如将数据操作语言 DML 附加到输入参数) ;
      • SQLParameter 类指定存储过程参数的数据类型 , 作为深层次防御性策略的一部分 , 可以验证用户提供的值类型 (但也不是万无一失 , 还是应该传递至数据库前得到附加验证) ;

    缺点 :

    1. 如果更改范围大到需要对输入存储过程的参数进行更改 , 或者要更改由其返回的数据 , 则仍需要更新程序集中的代码以添加参数 , 等等 ;
    2. 可移植性差 , 由于存储过程将应用程序绑定到 Server , 因此使用存储过程封装业务逻辑将限制应用程序的可移植性 ; 如果应用程序的可移植性在您的环境中非常重要 , 则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择 ;

    3. 编写简单存储过程

    创建一个存储过程

    create procedure GetUsers()
    begin 
    	select * from user; 
    end;
    

    调用存储过程

    call GetUsers();
    

    删除存储过程

    drop procedure if exists GetUsers;
    

    4. 带参数的存储过程

    MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;

    下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出

    create procedure GetScores(
    	out minScore decimal(8,2),
    	out avgScore decimal(8,2),
    	out maxScore decimal(8,2)
    )
    begin
    	select min(score) into minScore from user;
    	select avg(score) into avgScore from user;
    	select max(score) into maxScore from user;
    end;
    

    调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以 @ 开始) , 如下所示 :

    call GetScores(@minScore, @avgScore, @maxScore);
    

    该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量 @minScore, @avgScore, @maxScore , 然后即可调用显示该变量的值 :

    select @minScore, @avgScore, @maxScore;
    

    使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :

    create procedure GetNameByID(
    	in userID int,
    	out userName varchar(200)
    )
    begin
    	select name from user
    	where id = userID
    	into userName;
    end;
    

    调用存储过程 :

    call GetNameByID(1, @userName);
    select @userName;
    

    5. 复杂一点示例

    根据 ID 获取货品的价格 , 并根据参数判断是否折扣 :

    create procedure GetPriceByID(
    	in prodID int,
    	in isDisc boolean,
    	out prodPrice decimal(8,2)
    ) 
    begin
    	declare tmpPrice decimal(8,2);
    	declare prodDiscRate decimal(8,2);
    	set prodDiscRate = 0.88;
    
    	select price from products
    	where id = prodID
    	into tmpPrice;
    
    	if isDisc then
    		select tmpPrice*prodDiscRate into tmpPrice;
    	end if;
    
    	select tmpPrice into prodPrice;
    end;
    

    该存储过程传入三个参数 , 货品 ID , 是否折扣以及返回的价格 , 在存储过程内部 , 定义两个局部变量 tmpPrice 和 prodDiscRate , 把查询出来的结果赋给临时变量 , 再判断是否折扣 , 最后把局部变量的值赋给输出参数 ; 调用如下 :

    call GetPriceByID(1, true, @prodPrice);
    select @prodPrice;
    

    6. DELIMITER

    MySql 的命令行客户机的语句分隔符默认为分号 ; ,而实用程序也是用 ; 作为分隔符,这会使得存储过程的 SQL 出现语法错误,使用 DELIMITER $$ 告诉命令行实用程序将 $$ 作为新的语句结束分隔符,最后再使用 DELIMITER ; 改回来,如下所示:

    DELIMITER $$ 
    create procedure getUsers() begin select * from user; 
    end $$ 
    DELIMITER ;
    
    
    DELIMITER $$
    CREATE PROCEDURE getcount()
    BEGIN
    SELECT
    *
    FROM
    contract_user;
    END $$
    DELIMITER ;
    
    CALL getcount();
    

    个人网站: Github , 欢迎点击给星

    展开全文
  • SQL 存储过程 调试

    千次阅读 2018-04-20 16:02:04
    SQL 存储过程 调试SqlServer输出 print @变量名 print @NextCount print '输出常量'在需要的位置写上,然后执行下述操作,执行一遍,对该存储过程进行保存然后选择需要执行的存储过程,填写对应的参数,点击确定...

    SQL 存储过程 调试

    SqlServer

    输出 print @变量名   print  @NextCount    print  '输出常量'

    在需要的位置写上,然后执行下述操作,执行一遍,对该存储过程进行保存


    然后选择需要执行的存储过程,填写对应的参数,点击确定执行;



    执行后会出现下述图片,点击 消息 查看自己的print输出结果;



    展开全文
  • SQL存储过程和函数

    千次阅读 2019-07-05 14:19:07
    SQL存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合。 与函数的区别 (1)函数必须有返回值,而存储过程没有 (2)存储过程的参数可以使用 IN、OUT、INOUT 类型,而函数的...

    SQL存储过程和函数

      存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合。
    

    与函数的区别

    (1)函数必须有返回值,而存储过程没有

    (2)存储过程的参数可以使用 IN、OUT、INOUT 类型,而函数的参数只能是 IN 类型的。

    相关操作

    语句 定义

    CREATE PROCEDURE sp_name
    ([proc_parameter[,…]])
    [characteristic …] routine_body

    创建存储过程

    CREATE FUNCTION sp_name
    ([func_parameter[,…]]
    RETURNS type [characteristic …]
    routine_body

    创建函数

    ALTER {PROCEDURE | FUNCTION} sp_name
    [characteristic …]

    修改 存储过程/函数

    CALL sp_name([parameter[,…]])

    调用过程

    DROP PROCEDURE name

    删除存储过程

    SHOW {PROCEDURE|FUNCTION} STATUS [LIKE ‘pattern’]

    查看存储过程或者函数的状态

    SHOW CREATE {PROCEDURE |FUNCTION} sp_name

    查看存储过程或者函数的定义

    select * from routines where ROUTINE_NAME = ‘film_in_stock’ \G

    获取存储过程和函数的包括名称、类型、语法、创建人 等信息。

    DECLARE var_name[,…] type [DEFAULT value]

    变量的定义{用于begin…end块中}

    SET var_name = expr [, var_name = expr]

    变量的赋值

    DECLARE condition_name CONDITION FOR condition_value

    条件的定义

    DECLARE handler_type
    HANDLER FOR condition_value[,…] sp_statement

    条件的处理

    DECLARE cursor_name CURSOR FOR select_statement

    声明光标

    OPEN cursor_name

    打开光标

    FETCH cursor_name INTO var_name [, var_name] …

    fetch光标

    CLOSE cursor_name

    关闭光标

    IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] …
    [ELSE statement_list]
    END IF

    IF语句

    CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] …
    [ELSE statement_list]
    END CASE

    CASE语句

    [begin_label:] LOOP
    statement_list
    END LOOP [end_label]

    LOOP语句

    [begin_label:] REPEAT
    statement_list
    UNTIL search_condition
    END REPEAT [end_label]

    REPEAT语句

    [begin_label:] WHILE search_condition DO
    statement_list
    END WHILE [end_label]

    WHILE语句

    参数说明:

    创建存储过程的proc_parameter:

    • [ IN | OUT | INOUT ] param_name type

    创建函数的func_parameter:

    • param_name type

    创建函数的type:

    • Any valid MySQL data type

    创建存储过程/函数的characteristic:

    • (1) | LANGUAGE SQL //说明下面过程的BODY是使用SQL语言
    • (2) | [NOT] DETERMINISTIC //DEDETERMINISTIC 确定的,即每次输入一样输出也一样的程序,NOT DETERMINISTIC 非确定的,默认是非确定的。
    • (3)| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } //CONTAINS SQL 表示子程序不包含读或写数据的语句。NO SQL 表示子程序不包含 SQL 语句。READS SQL DATA 表示子程序包含读数据的语句,但不包含写数据的语句。MODIFIES SQL DATA 表示子程序包含写数据的语句。
    • (4)| SQL SECURITY { DEFINER | INVOKER } //可以用来指定子程序该用创建子程序者的许可来执行,还是使用调用者的许可来执行。默认值是 DEFINER
    • (5) | COMMENT ‘string’ //存储过程或者函数的注释信息。

    创建存储过程/函数的 routine_body:

    • Valid SQL procedure statement or statements

    修改存储过程/函数中的characteristic:

    • { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }
      | COMMENT 'string

    条件的定义condition_value:

    • SQLSTATE [VALUE] sqlstate_value <

      |mysql_error_code

    条件的处理参数handler_type:

    • CONTINUE | EXIT | UNDO

    condition_value:

    SQLSTATE [VALUE] sqlstate_value  
    
    | condition_name  
    
    | SQLWARNING  //对所有以 01 开头的 SQLSTATE 代码的速记
    
    | NOT FOUND  //对所有以 02 开头的 SQLSTATE 代码的速记
    
    | SQLEXCEPTION  //对所有没有被 SQLWARNING 或 NOT FOUND 捕获的 SQLSTATE 代码的速记。
    
    | mysql_error_code
    

    例子

    mysql> DELIMITER $$   //delimiter将sql的结束标志设为$$
    
    mysql>
    mysql> CREATE PROCEDURE film_in_stock(IN p_film_id INT, IN p_store_id INT, OUT p_film_count
    
    INT)
        -> READS SQL DATA
    
        -> BEGIN
    
        -> SELECT inventory_id
    
        -> FROM inventory
    
        -> WHERE film_id = p_film_id
    
        -> AND store_id = p_store_id
    
        -> AND inventory_in_stock(inventory_id);  调用了函数inventory_in_stock()
    
        ->
    
        -> SELECT FOUND_ROWS() INTO p_film_count;
    
        -> END $$
    
    Query OK, 0 rows affected (0.00 sec)
    mysql>
    mysql> DELIMITER ;  //delimiter将sql的结束标志设为;
    
    展开全文
  • SQL存储过程参数默认值

    千次阅读 2019-07-13 22:27:06
    MS SQL 存储过程参数默认值例子:create procedure pro_Name( @cNo varchar(8), @cName varchar(20)= '%')as begin SQL 语句集...
  • sql存储过程总结

    千次阅读 2013-11-18 15:32:02
    sql存储过程总结  分类: Mysql/postgreSQL 1. Sql存储过程概述 在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言...
  • 详细实例全面解析SQL存储过程

    万次阅读 多人点赞 2019-04-09 16:39:41
    存储过程(Stored Procedure),是一组为了完成特定功能的SQL 语句,类似一门程序设计语言,也包括了数据类型、流程控制、输入和输出和它自己的函数库。存储过程可以说是一个记录集,...不过SQL存储过程对于一些初学者...
  • sql 存储过程 入门级 练习

    千次阅读 2015-08-20 10:16:38
    sql 存储过程 入门级
  • Sql存储过程基本语法

    千次阅读 2014-02-22 23:21:15
    Sql存储过程基本语法之简介: 存储过程(Stored Procedure), 是一组为了完成特定功能的SQL 语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,如果该存储过程带有参数来执行它,在SQL ...
  • sql存储过程中分隔字符串

    千次阅读 2017-05-03 22:09:47
    sql存储过程中分隔字符串
  • sql 存储过程的print 打印结果去了哪儿?java调用存储过程会打印吗?
  • sQL存储过程的优缺点

    千次阅读 2017-01-04 11:33:19
    目前具体的项目中没有使用sql存储过程,都用的封装好的框架,简单说下存储过程的优缺点。 优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,...
  • sql存储过程几个简单例子

    千次阅读 2018-07-17 14:57:50
    导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解。 例1: create proc...
  • SQL存储过程(Stored Procedure)

    万次阅读 2015-12-28 10:37:11
    SQL存储过程(Stored Procedure) 什么是存储过程? 存储过程(procedure)类似于C语言中的函数用来执行管理任务或应用复杂的业务规则存储过程可以带参数,也可以返回结果存储过程可以包含数据操纵语句、变量...
  • sql存储过程完全教程

    万次阅读 多人点赞 2007-09-22 10:11:00
    1.sql存储过程概述2.SQL存储过程创建3.sql存储过程及应用4.各种存储过程使用指南5.ASP中存储过程调用的两种方式及比较6.SQL存储过程在.NET数据库中的应用 7.使用SQL存储过程要特别注意的问题 1.sql存储过程概述 在...
  • SQL存储过程传入可以为空的参数

    千次阅读 2020-03-02 10:08:27
    SQL存储过程可以传入可以为空 的参数,写为@I int=null 的方式,传入参数时,既可以传入int类型的值,也可以传为null值
  • 定时自动执行SQL存储过程(图文详解)

    千次阅读 2019-11-13 10:00:33
    当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 打开SQL Server Management Studio,SQL Server代理--作业--点右键--新建作业 作业的名称取为:...
  • SQL存储过程中SQL语句拼接

    千次阅读 2013-03-19 10:11:42
    SQL存储过程中SQL语句拼接 转载自http://blog.sina.com.cn/s/blog_a525ba0201016klz.html   当作例子,看懂。    set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================...
  • springboot2.0 + myBatis 调用SQL 存储过程 1、 写在前面 最近项目需要,公司大佬写了一个很流弊的存储过程,第一次调用记录一下! 2、代码 存储过程: -- in/out 类型, in是入参 ,out是返回的参数 create or ...
  • sql 存储过程命名规范

    千次阅读 2012-06-11 15:58:34
    sql 存储过程命名规范 规范的命名可以提高开发和维护的效率,如果你正在创建一个新的存储过程,请参考如下的命名规范。 句法: 存储过程的命名有这个的语法: [proc] [MainTableName] By [FieldName(optional)...
  • [搜集整理]sql存储过程教程

    千次阅读 2009-08-14 14:48:00
    sql存储过程教程 目录1.sql存储过程概述2.SQL存储过程创建3.sql存储过程及应用4.各种存储过程使用指南5.ASP中存储过程调用的两种方式及比较6.SQL存储过程在.NET数据库中的应用 7.使用SQL存储过程要特别注意的...
  • 本文主要介绍 SQLServerExpress2008不用第三方工具调试T-SQL语句,经过本文的介绍,用SQLSERVER2008 Manage studio 编写、调试T-SQL存储过程
  • C#调用sql存储过程

    千次阅读 热门讨论 2018-02-18 09:00:37
    2.执行效率高:sqlserver会事先将存储过程编译成可执行的二进制代码,运行存储过程时,无需再次编译。3.封装性:也可叫模块式编程,将实现某种功能的多条sql封装到一个对象中,可多次重复调用,可移植性强。4.安全:...
  • C#使用SQL存储过程完整流程

    万次阅读 2011-12-09 17:29:32
    唉,只怪自己学术不精,现在才学习SQL存储过程,从网上找了不少资料,可是很凌乱,定位也比较高,不适合我这样的小菜学习,现在我就来总结一下C#使用SQL存储过程完整的流程,以SQL2005为例。  先简单的说说什么是...
  • 上千行的 SQL 代码常见,且永不过时! 经历了大大小小的 MIS 系统,小到几人用的协作系统,几十人用的 OA 系统,到上千人用的 MES/ERP 系统,再到...上回我们说道如何去拆一个上千行的 SQL 存储过程,提到了四大...
  • 多表联合查询sql存储过程带分页

    千次阅读 2015-03-04 14:56:58
    多表联合查询sql存储过程带分页
  • 使用sql语句定义一个存储过程挺简单的,参考这一篇博文https://blog.csdn.net/qq_44973159/article/details/91491985 create procedure ccgc as select * from t_student 而使用java并不 那么简单了,,,如下 ...
  • SQL存储过程调用另一个存储过程

    万次阅读 2018-08-23 20:14:05
    偷师于吉普赛的歌。。。 直接上代码了 USE tempdb GO -- 定义中转表,结构与你需要输出的一致,但需要增加 sessionId 和 addTime, -- sessionId 防止并发时出现无法辨别的问题 -- addTime 记录插入时间,便于观察...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,458
精华内容 32,183
关键字:

sql存储过程