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

    千次阅读 2018-06-22 15:45:54
    1.使用SQL Server管理平台创建存储过程在SQL Server管理平台中,创建存储过程的步骤如下:(1)打开SQL Server管理平台,展开结点“对象资源管理器”→“数据库服务器”→“可编程性”→“存储过程”,在窗口的右侧...

    1.使用SQL Server管理平台创建存储过程

    在SQL Server管理平台中,创建存储过程的步骤如下:

    (1)打开SQL Server管理平台,展开结点“对象资源管理器”→“数据库服务器”→“可编程性”→“存储过程”,在窗口的右侧显示出当前数据库的所有存储过程。右击,在弹出的快捷菜单中选择“新建存储过程”命令。

    (2)在打开的SQL命令窗口中,系统给出了创建存储过程命令的模板。在模板中输入创建存储过程的Transact-SQL语句后,单击“执行”按钮即可创建存储过程。

    (3)建立存储过程的命令被成功执行后,选择“对象资源管理器”→“数据库服务器”→“可编程性”→“存储过程”命令,可以看到新建立的存储过程。

    2.使用CREATE PROCEDURE语句创建存储过程

    SQL Server还可以使用CREATE PROCERDURE语句创建存储过程。在创建存储过程之气那,应该考虑以下几个方面:

    (1)在一个批处理中,CREATE PROCEDURE 语句不能与其他SQL语句合并在一起。

    (2)数据库所有者具有默认的创建存储过程的权限,它可把该权限传递给其他的用户。

    (3)存储过程作为数据库对象其命令必须符合标识符的命名规则。

    (4)只能在当前数据库中创建属于当前数据库的存储过程。

    创建存储过程语句的语法格式如下:

    CREATE PROC[EDURE] procedure_name[;number]

    [{@parameter data_type}

      [VARYING][=default][OUTPUT]][,...n]

    [WITH

       {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]

    [FOR REPLICATION]

    AS sql_statement[,...n]

    各选项的含义如下:

    (1)procedure_name:新建存储过程的名称。它后面跟的可选项number是一个整数,用来区别一组同名的存储过程。存储过程的命名必须符合标识符的命名规则,在一个数据库中或对其所有者而言,存储的名字必须唯一。

    (2)@parameter:存储过程的参数。在CREATE PROCEDURE语句中可以声明一个或多个参数。用户必须在执行过程时提供每个声明参数的值(除非定义了该参数的默认值)。若参数的形式以@parameter=value出现,则参数的次序可以不同,否则用户给出的参数值必须与参数列表中参数的顺序保持一致。若某一参数以@parameter=value形式给出,则其他参数必须具有相同形式。一个存储过程最多可以有2100个参数。

    (3)data_type:指示参数的数据类型。所有数据类型(包括text、ntext、image)均可以用作存储过程的参数。但游标CURSOR类型只能用于OUTPUT参数,而且必须同时指定VARYING和OUTPUT关键字。

    (4)default:给定参数的默认值。如果定义了默认值,则不指定该参数值仍能执行过程。默认值必须时常量或NULL。

    (5)OUTPUT:表明参数是返回参数。使用OUTPUT参数可将信息返回给调用过程。

    (6)RECOMPILE:表明SQL Server不保存该过程的执行计划,该过程每执行一次都要重新编译。

    (7)ENCRYPTION:表示SQL Server加密syscomments表,该表中包含CREATE PROCEDURE语句的存储过程文本。使用该关键字可防止通过syscomments表来查看 存储过程内容。

    (8)FOR REPLICATION:指定不能在订阅服务器上执行为复制创建的存储过程。只有在创建过滤存储过程时,才使用该选项。本选项不能和WITH RECOMPILE选项一起使用。

    (9)AS sql_statement:执行过程要执行的操作,sql_statement是过程中要包含的任意数目和类型的Transact-SQL语句。

    举例:创建存储过程,从表goods和表goods_classification的连接中返回商品名、商品类别、单价。

    CREATE PROCEDURE goods_info AS

    SELECT goods_name,classification_name,unit_price

    FROM goods g INNER JOIN goods_classifcation gc

      ON g.classification_id=gc.classificaton_id

    存储过程创建后,存储过程的名称存放在sysobject表中,文本存放在syscomments表中。




    展开全文
  • postgresql使用创建存储过程

    千次阅读 2019-10-21 17:20:56
    postgresql创建存储过程 create function pr_update_goods_map_code() returns integer language plpgsql as $$ declare recd RECORD; kdId varchar(64); outint_cnt Integer; begin outint_cnt = 0; ...

    postgresql创建存储过程

    create function pr_update_goods_map_code()
      returns integer
    language plpgsql
    as $$
    declare
       recd RECORD;
       kdId varchar(64);
       outint_cnt Integer;
    begin
        outint_cnt = 0;
        create temporary table "goods_map" as
        select '01.03.0004' as old_code,'*非金属矿物制品*玻璃杯-玉晶3801' as old_name,'01.01.0001' as new_code,'*非金属矿物制品*玻璃杯-玉晶3801' as new_name union
        select '07.02.0056' as old_code,'*纸制品*2*5彩色纸片(阻燃)' as old_name,'01.01.0031' as new_code,'*纸制品*2*5彩色纸片(阻燃)' as new_name union
        select '07.02.0188' as old_code,'*纸制品*2*5白色纸片(阻燃整齐款)' as old_name,'01.01.0039' as new_code,'*纸制品*2*5白色纸片(阻燃整齐款)' as new_name union
        select '07.02.0207' as old_code,'100g阻燃电子礼花(80cm)' as old_name,'01.01.0041' as new_code,'100g阻燃电子礼花(80cm)' as new_name union
        select '07.02.0213' as old_code,'*纸制品*彩色阻燃电子礼花(80cm)' as old_name,'01.01.0042' as new_code,'*纸制品*彩色阻燃电子礼花(80cm)' as new_name;
        for recd in (select * from goods_map) loop
            outint_cnt = outint_cnt + 1;
            select id into kdId from t_kd_goods_map where kd_goods_code = recd.old_code and kd_goods_name = recd.old_name and status =1;
            if kdId is null then
                raise notice '%', recd.old_code ||';'||recd.old_name;
            else
               update t_kd_goods_map set kd_goods_code = recd.new_code,update_time =now() where id =kdId;
            end if;
        end loop;
        drop table goods_map;
      return outint_cnt;
    end;
    $$;

     

    展开全文
  • MySQL创建存储过程

    万次阅读 2019-03-27 17:08:44
    Navicat for MySQL创建存储过程及MyBatis调用存储过程 问题描述 一条语句实现向两个表中添加数据 前段时间遇到需求,向一个表中添加数据,获取新增主键值。再向另一个表添加数据,其中一个字段为前一个表的主键值。...

    Navicat for MySQL创建存储过程及MyBatis调用存储过程


    问题描述

    一条语句实现向两个表中添加数据

    前段时间遇到需求,向一个表中添加数据,获取新增主键值。再向另一个表添加数据,其中一个字段为前一个表的主键值。并返回第二次添加的表的自增主键值。上网查到的一个方法为使用存储过程,便按照这个思路试着实现一下,现将过程回忆记录下来。

    项目环境

    SSM框架项目+Navicat管理MySQL数据库

    解决问题

    一、Navicat for MySQL创建存储过程

    1.新建函数→选择“过程”
    在这里插入图片描述
    2.添加参数

    模式:
    IN:输入参数
    OUT:输出参数
    INOUT:既作为输入参数,也作为输出参数

    在这里插入图片描述
    3.写存储过程里面要执行的内容

    CREATE DEFINER=`root`@`%` PROCEDURE `InsertNewConsultation`(IN `user_id` int,IN `doc_id` int,IN `now_time` datetime,IN `disease_id` int,IN `patient_id` int,IN `patient_speak_text` text,OUT `patient_speak_id` int)
    BEGIN
    --声明变量
    DECLARE consultation_id INT;
    	insert into 
    	consultation_basic
    		(user_id,last_reply_text,last_reply_time,consultation_status,doctor_unread_number,disease_id,patient_unread_number,patient_id,doc_id)
    	values
    		(user_id,patient_speak_text,now_time,1,1,disease_id,0,patient_id,doc_id);
    	
    	SET consultation_id = @@identity;
    	
    	insert into 
    	patient_speak
    		(patient_speak_text,patient_user_id,patient_speak_time,isread,consultation_id)
    	values
    		(patient_speak_text,user_id,now_time,0,consultation_id);
    	
    	SET patient_speak_id = @@identity;
    
    END
    

    4.保存即可

    二、MyBatis调用存储过程

    <select id="insertConsultationBasic"  parameterType="com.xxx.platform.entity.NewConsultationCustom" 
     	resultType="com.xxx.platform.entity.NewConsultationCustom" statementType="CALLABLE">
    	{
    		CALL InsertNewConsultation(
    			#{user_id,jdbcType=INTEGER,mode=IN},
    			#{doc_id,jdbcType=INTEGER,mode=IN},
    			#{last_reply_time,jdbcType=TIMESTAMP,mode=IN},
    			#{disease_type_id,jdbcType=INTEGER,mode=IN},
    			#{patient_id,jdbcType=INTEGER,mode=IN},
    			#{patient_speak_text,jdbcType=VARCHAR,mode=IN},
    			#{patient_speak_id,jdbcType=INTEGER,mode=OUT}
    		)
    	}
    </select>
    

    注:调用存储过程时,注意参数顺序不能错。

    展开全文
  • 使用Navicat for MySQL创建存储过程

    万次阅读 2017-03-17 10:45:26
    方法一: 1. 利用工具栏打开【查询】--【新建查询】...2.执行sql创建存储过程,然后直接写SQL调用存储过程(CALL XXOO('财务部')) 方式二: 1.打开navicat选择要创建存储过程的数据库. 利用工具栏打开【函数】--

    方法一:

    1. 利用工具栏打开【查询】--【新建查询】窗口编写sql:

    注意:如果不用参数,红色方框里面的左右括号也是必要的(下划线的地方的分号不能少,不然执行时会报错)



    2.执行sql创建存储过程,然后直接写SQL调用存储过程(CALL XXOO('财务部'))





    方式二:

    1.打开navicat选择要创建存储过程的数据库. 利用工具栏打开【函数】--【新建函数】:



    2.添加所要输入的参数,选择模式和类型(注意:这里并没有默认提供大小)。



    3.输入存储过程的定义语句。



    4.保存,输入存储过程的名字。


    注意:保存中会出现如此错误,是因为创建时系统并没有提供大小(例如varchar类型),需要自己输入大小,否则保存不成功。


    5.保存成功。



    6.点击运行,输入参数,执行存储过程。 






    展开全文
  • navicat 创建存储过程

    万次阅读 2015-11-07 00:03:37
    navicat创建存储过程图解
  • 数据库创建存储过程

    千次阅读 2017-12-18 22:35:00
    创建存储过程的原因:一般在数据库中SQL编辑器只能写sql语句,创建存储过程后可在对象编辑器中加入除了sql语句之外的语句(例如:if,else语句)。创建存储过程类似于python中创建函数,可传参。 一.在Mysql-front...
  • sql server 创建存储过程

    万次阅读 多人点赞 2018-03-01 13:52:52
    右键单击“存储过程”,再单击“新建存储过程”将会创建存储过程模板:让我困惑的 &lt;Procedure_Name, sysname, ProcedureName&gt; 有什么用?搜遍全网 也没答案。。。。上图其实是一个存储过程...
  • 使用DELIMITER创建存储过程的用法

    千次阅读 2016-09-16 11:28:14
    使用DELIMITER创建存储过程的用法在mysql下使用delimiter创建存储过程时,由于格式问题,数据库一直报错,错误如下: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that ...
  • DbVisualizer创建存储过程

    万次阅读 2013-03-19 17:06:21
    DbVisualizer连接DB2创建存储过程 --/ CREATE PROCEDURE test LANGUAGE SQL BEGIN ... END / “--/”和"/"一定不能丢失,否则就会报错。
  • NAVICAT如何创建存储过程

    万次阅读 2017-12-01 14:02:56
    以下为navicat 创建存储过程步骤图解: 1. 2. 3. 4.在存储过程正文中是输入一行语句测试用,点击保存 5.输入存储过程名称,点击确定 6.到这来那么问题来了,会提示...
  • 创建存储过程和java调用存储过程

    千次阅读 2015-12-16 18:05:36
    创建存储过程--get_jobname create or replace procedure get_jobname(v_jobid in varchar2,v_jobname out varchar2) as begin select job_name into v_jobname from schedule_job where job_id = v_jobid; --变量...
  • SQL Server 创建存储过程

    千次阅读 2019-04-01 14:21:20
    存储过程
  • 创建存储过程,执行存储过程

    千次阅读 2018-07-27 17:18:07
    无参数存储过程 create or replace procedure 存储过程的名称 is begin  xxxx......此处为自己需要执行的sql语句 commit; end 存储过程的名称;   含有入参的存储过程   create or replace procedure ...
  • 使用Navicat12创建存储过程,执行定时事件需求说明: 一个用户在他第一次添加手机号码的时候自动将他绑定到用户表的phone字段方法一:创建存储过程,执行定时事件1 创建两张表1.1 用户表tbl_userCREATE TABLE `...
  • DB2创建存储过程

    千次阅读 2020-04-26 17:55:47
    声明一个存储过程:CREATE PROCEDURE 存储过程名(IN 输入变量名 输入变量类型,OUT 输出变量名 输出变量类型) 存储过程名后面是存储过程属性列表,常用的有:LANGUAGE SQL、MODIFIES SQL DATA、RESULT SETS 1(返回结果...
  • Greenplum创建存储过程

    万次阅读 2018-08-22 20:29:14
    创建表 CREATE TABLE table1 ( f1 text, f2 numeric, f3 integer ) distributed by (f1); 添加数据 INSERT INTO table1 values ('test1', 14.1, 3), ('test2', 52.5, 2), ('test3', 32.22,...
  • mysql创建存储过程

    千次阅读 2017-09-08 11:08:01
    今天是2017年9月8日,距离国庆...好了不谈这些无用的东西了,我们来一起看看存储过程存储过程是一些sql语句的集合,比如有的时候我们可能需要一大串的sql语句,或者说在编写SQL语句的过程中还需要设置一些变量的
  • SQL创建存储过程

    千次阅读 2008-11-18 16:06:00
    您可以使用 Transact-SQL 语句 CREATE PROCEDURE 来创建存储过程创建存储过程前,请考虑下列事项: CREATE PROCEDURE 语句不能与其他 SQL 语句在单个批处理中组合使用。要创建过程,您必须具有数据库的 CREATE ...
  • mysql 5.7 创建存储过程报错

    千次阅读 2018-06-23 10:59:29
    创建存储过程: mysql&amp;gt; delimiter // mysql&amp;gt; create procedure delete_yy -&amp;gt; begin -&amp;gt; select * from student; -&amp;gt; end // 报错如下: ERROR ...
  • 1:是存储过程的参数没有设定长度导致的,我们在Navicat中创建存储过程时参数的长度需要自己动手去添加的否则就会包这种错误。 添加上参数的长度之后在保存就不会出错了。 2:如果参数没问题,检查下自己的...
  • MySql创建存储过程(procedure)

    万次阅读 多人点赞 2018-09-27 16:48:53
    如果存储过程中含有动态SQL语句,在触发器中调用该存储过程时会报错ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger。 该错误的含义是:函数或者触发器不支持动态SQL语句。下面...
  • mysql存储过程之创建存储过程

    千次阅读 2012-01-16 14:49:54
    在11年10月份要做性能测试,需要...性能测试早就已经做完了,周末的时候整理的存储过程的一些方法,很简单,如果只是简单的使用,应该够用了。对于错误处理、游标、事务的高级使用,请高手拍砖吧。^_^ 工具:SQLy
  • 创建存储过程和触发器   1、建表 首先先建两张表(users表和number表),具体设计如下图:   2、存储过程 写一个存储过程,往users表中插入数据,创建过程如下:   代码如下:
  • 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。在大型数据库系统中,...
  • mysql 在navicat中创建存储过程

    万次阅读 2018-06-13 00:37:04
    1、navicat for mysql安装及连接到数据库navicat安装就不说了,...图12、在MySql Shell下创建存储过程创建存储过程时,可以在mysql shell里头写代码实现,下面是在shell创建并调用一个存储过程的简单实例。给定一...
  • 在SQLyog上使用SQL语句创建存储过程

    千次阅读 2018-11-29 13:46:23
    首先来写一条简单的创建存储过程的语句,将教师表中中符合条件的教师数量进行统计返回到num中,代码如下: CREATE PROCEDURE teacherSum(IN sex varchar(4), IN depart varchar(10), OUT num INT) BEGIN SELECT ...
  • SQLServer之创建存储过程

    万次阅读 2018-11-01 11:18:45
    创建存储过程注意事项 在 SQL Server、 Azure SQL Database、Azure SQL 数据仓库和并行数据库中创建 Transact-SQL 或公共语言运行时 (CLR) 存储过程,存储过程与其他编程语言中的过程类似。 可以在当前数据库...
  • dbeaver可以创建存储过程吗?需要有哪些注意的地方,格式是不是需要改?![图片](https://img-ask.csdn.net/upload/201706/26/1498452635_530275)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,355,033
精华内容 542,013
关键字:

创建存储过程使用