精华内容
下载资源
问答
  • mysql 存储过程 如何定义变量 请教MSSQL sql server 2000写法gocreate proc loadUser@uname varchar(16),@upwd varchar(16),@count int outputasselect * from users where uname=@uname and upwd=@upwdif(@@...

    mysql 存储过程 如何定义变量 请教

    MSSQL sql server 2000写法

    go

    create proc loadUser

    @uname varchar(16),

    @upwd varchar(16),

    @count int output

    as

    select * from users where uname=@uname and upwd=@upwd

    if(@@error=0 and @@rowcount = 1)

    set @count = 1;

    else set @count=0;

    go

    在Mysql 当中怎么写呀

    如何 定义一个变量

    create procedure login(uname varchar(64),upwd varchar(64),out counts int)

    [color=#00FFFF]DECLARE iCount int;

    begin

    SET iCount = 10;

    SELECT iCount;

    end[/color]

    对了请问下 IF EXISTS(SELECT * FROM sysdatabases WHERE name='bookshop') 这样的语句 mysql 支持吗?就是

    判断 有没有查出内容来??

    ------解决方案--------------------

    如何 定义一个变量

    你的方法是对的,用 DECLARE iCount INT; 来定义变量。

    IF EXISTS(。。。)这种语句目前还不被MySQL 5.x支持,实现相同功能的做法是再定义一个变量,然后利用select .. into来对这个变量赋值,然后判断是否exists符合条件的记录。如果多记录,可以改为 select count(*) into ..

    SQL code

    mysql> delimiter // mysql> mysql> CREATE PROCEDURE login (uname varchar(64),upwd varchar(64),out counts int) -> BEGIN -> DECLARE iCount INT; -> DECLARE bExist INT DEFAULT 0; -> -> SET iCount = 10; -> -> SELECT 1 into bExist FROM t WHERE name=uname; #use the variable to check the IF EXISTS -> -> IF bExist>0 then -> SELECT iCount,'Record Found.'; -> ELSE -> SELECT iCount,'NOT EXISTS'; -> END IF; -> -> END; -> -> // Query OK, 0 rows affected (0.00 sec) mysql> mysql> delimiter ; mysql> call login('f3','pswd',@i); +--------+---------------+ | iCount | Record Found. | +--------+---------------+ | 10 | Record Found. | +--------+---------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.02 sec) mysql> call login('unkonw','pswd',@i); +--------+------------+ | iCount | NOT EXISTS | +--------+------------+ | 10 | NOT EXISTS | +--------+------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected, 1 warning (0.02 sec) mysql>

    ------解决方案--------------------

    好像能用吧,我的存储过程就是是这样写的,没有报错呀

    ------解决方案--------------------

    DECLARE iCount int;

    begin

    SET iCount = 10;

    SELECT iCount;

    MYSQ中是可以的

    对了请问下 IF EXISTS(SELECT * FROM sysdatabases WHERE name='bookshop') 这样的语句 mysql 支持吗?就是

    判断 有没有查出内容来??

    select count(*) into @ee FROM sysdatabases WHERE name='bookshop'

    if @ee>1 then

    select 'OK';

    ELSE

    select 'NO';

    END IF

    欢迎大家阅读《mysql 存储过程 怎么定义变量 请问》,跪求各位点评,by 搞代码

    e7ce419cf2d6ad34d01da2ceb8829eed.png

    微信 赏一包辣条吧~

    023a57327877fb4402bcc76911ec18ea.png

    支付宝 赏一听可乐吧~

    展开全文
  • 1.定义变量,赋值,... -- 如果proc_first存在就删除create procedure proc_first()-- 创建存储过程begin-- 定义变量DECLARE age INT;-- 赋值set age = 23;select age;end;-- 执行call proc_first;1.定义变量,赋...

    1.定义变量,赋值,判断,输出

    DROP PROCEDURE IF EXISTS proc_first; -- 如果proc_first存在就删除

    create procedure proc_first()-- 创建存储过程

    begin

    -- 定义变量

    DECLARE age INT;

    -- 赋值

    set age = 23;

    select age;

    end;

    -- 执行

    call proc_first;

    115297_0.png

    1.定义变量,赋值,判断,循环,输出

    begin

    -- 定义变量

    DECLARE modeId INT;

    DECLARE depotCode VARCHAR(20);

    DECLARE factoryId BIGINT;

    DECLARE count INT;

    -- 遍历数据结束标志

    DECLARE Adone INT DEFAULT FALSE;

    -- 查询数据查代发商下的仓库模式对应的仓库数量

    DECLARE cursor_factory_modelid_depot CURSOR FOR select d.factoryId,d.modeId,d.depotCode,count(*) as count from scm_factory_depot d GROUP BY d.factoryId,d.modeId;

    -- 将结束标志绑定到游标

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET Adone = TRUE;

    -- 打开游标

    OPEN cursor_factory_modelid_depot;

    read_loop: LOOP

    -- 取值 取多个字段

    FETCH cursor_factory_modelid_depot INTO factoryId,modeId,depotCode,count;

    IF Adone THEN

    LEAVE read_loop;

    END IF;

    -- 如果仓库数量等于1,就把仓库编码同步到UPC表

    -- if count=1 THEN

    -- update scm_factory_upc u1 set u1.depotCode=depotCode where u1.factoryId=factoryId and u1.modeId=modeId;

    -- select '执行update语句';

    -- end if;

    -- 如果仓库数量大于1,就需要在UPC表新增三条对应的数据,仓库编码不一样

    if count>1 THEN

    -- 查询数据查代发商下的仓库模式对应的仓库明细

    -- select d2.factoryId,d2.modeId,d2.depotCode from scm_factory_depot d2 where d2.factoryId=factoryId and d2.modeId=modeId;

    -- 163 5 testdpot

    -- 163 5 0001

    begin

    DECLARE MfactoryId BIGINT;

    DECLARE MmodeId INT;

    DECLARE MdepotCode VARCHAR(20);

    DECLARE Bdone INT DEFAULT FALSE;

    DECLARE flag INT;

    -- cursor_factory_upc

    DECLARE cursor_factory_upc CURSOR FOR select d2.factoryId,d2.modeId,d2.depotCode from scm_factory_depot d2 where d2.factoryId=factoryId and d2.modeId=modeId;

    -- 将结束标志绑定到游标

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET Bdone = TRUE;

    -- 打开游标

    OPEN cursor_factory_upc;

    set flag=1;

    read_upc_loop: LOOP

    FETCH cursor_factory_upc INTO MfactoryId,MmodeId,MdepotCode;

    IF Bdone THEN

    LEAVE read_upc_loop;

    END IF;

    -- SELECT MfactoryId,MmodeId,MdepotCode;

    -- 查询出每个仓库的数据

    -- select * from scm_factory_upc c1 where c1.factoryId=MfactoryId and c1.modeId=MmodeId;

    -- update scm_factory_upc u3 set u3.depotCode=MdepotCode where u3.factoryId=MfactoryId and u3.modeId=MmodeId;

    if flag=1 THEN

    SELECT '第一个仓库的数据设置了仓库编码',MdepotCode;

    -- update scm_factory_upc u3 set u3.depotCode=MdepotCode where u3.factoryId=MfactoryId and u3.modeId=MmodeId;

    END if;

    if flag>1 THEN

    select '插入了数据,仓库是',MdepotCode;

    end if;

    set flag = flag+1;

    END LOOP;

    CLOSE cursor_factory_upc;

    end;

    end if;

    END LOOP;

    CLOSE cursor_factory_modelid_depot;

    end

    展开全文
  • 昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程变量定义赋值操作哦。一、变量定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end块中使用...

    昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程中变量的定义赋值操作哦。

    一、变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end

    块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。

    定义一个变量语法如下:

    declare var_name[,...] type[default value]看一个变量定义实例

    declare last date;二、mysql存储过程变量赋值

    变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下

    set var_name= [,var_name expr]...给上面的last变量赋值方法如下

    set last = date_sub( current_date(),interval 1

    month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下

    select col into var_name[,...] table_expr我们来通过查询给v_pay赋值。

    create function get _cost(p_custid int,p_eff datetime)

    return decimal(5,2)

    deterministic

    reads sql data

    begin

    declare v_pay decimail(5,2);

    select ifnull( sum(pay.amount),0) into vpay from payment where

    pay.payd

    reutrn v_rent + v_over - v_pay;

    end $$

    好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。

    以下是其它网友的补充

    在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。

    定义变量使用DECLARE语句,语法格式如下:

    DECLARE var_name[,...] type [DEFAULT value]

    其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT

    value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。

    定义与使用变量时需要注意以下几点:

    DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。

    DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。

    ◆ 存储过程中的变量名不区分大小写。

    定义后的变量采用SET语句进行赋值,语法格式如下:

    SET var_name = expr [,var_name = expr] ...

    其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。

    例如:

    begin

    declare no varchar(20);

    declare title varchar(30);

    set no='101010',title='存储过程中定义变量与赋值';

    end

    提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。

    展开全文
  • MySQL变量定义和赋值是我们经常会遇到的问题,下面就为您接受如何存储过程中MySQL变量定义和赋值,希望对您学习MySQL变量定义方面能有所启迪。一、MySQL变量定义mysql变量定义用declare来定义一局部变量,mysql ...

    MySQL变量定义和赋值是我们经常会遇到的问题,下面就为您接受如何在存储过程中MySQL变量定义和赋值,希望对您学习MySQL变量定义方面能有所启迪。

    一、MySQL变量的定义

    mysql变量定义用declare来定义一局部变量,mysql 存储过程中变量的定义与赋值操作,该变量的使用范围只能在begin...end 块中使用,变量必需定义在复合语句的开头,并且系在其它语句之前,expr为值或者返回值的表达式,可使任何MySQL支持的返回值的表达式。一次可为多个变量赋值,也可同时申明多个变量,如该要,可使用default赋默认值。

    定义一个MySQL变量语法如下:

    declare var_name[,...] type[default value]看一个变量定义实例

    declare last date;

    二、mysql存储过程变量赋值

    变量的赋值可直接赋值与查询赋值来操作,直接赋值可用set来操作,可系常量或表达式如下

    set var_name= [,var_name expr]...

    给上面的last变量赋值方法如下

    set last = date_sub( current_date(),interval 1 month);

    下面看通过查询给变量赋值,要求查询返回的成果必需为一行,具体操作如下

    select col into var_name[,...] table_expr。

    create function get _cost(p_custid int,p_eff datetime)

    return decimal(5,2)

    deterministic

    reads sql data

    begin

    declare v_pay decimail(5,2);

    select ifnull( sum(pay.amount),0) into vpay from payment where pay.payd<=p_eff and pay.custid=pid

    reutrn v_rent + v_over - v_pay;

    end $$

    好了,这篇简单的存储过程中变量的定义赋值教程就到这了。

    【编辑推荐】

    【责任编辑:段燃 TEL:(010)68476606】

    点赞 0

    展开全文
  • MySQL存储过程变量定义

    千次阅读 2018-10-03 09:27:18
    在mysql存储过程也可以定义自己的变量,那么MySQL存储过程如何定义变量呢? 要在存储过程中声明一个变量,可以使用DECLARE语句 DECLARE variable_name datatype(size) DEFAULT default_value; MySQL允许您使用单个...
  • 如题..........
  • 2、@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据。如何理解呢?可以看下面这个简单例子,很好...
  • 存储过程、函数中会用到表变量,而且函数中不能用临时表,有时因为需要,在循环时,要先清空表变量中的内容。但表变量不像临时表一样,有一个命令(truncatetable#idqxmp)可以清空内容,于是上网找了好久,想能够...
  • 变量可以在子程序(性能、存储过程、匿名块)声明和使用。这些变量的范围是在BEGIN...END规划。变量定义语法格式:DECLARE var_name [, var_name]... data_type [ DEFAULT value ];var_name为局部变量的名称;DEFAULT...
  • 但是如果数据库的表文件没有使用独立表空间,或者在没有操作系统文件权限的情况下,dba就需要在数据库的角度,利用存储过程来实现了。在编写过程中要注意:简单的用set或者declare语句定义变量,然后直接作为sql的...
  • 上一篇博客我们认识了存储过程,还有讲了这个如何去创建存储过程,调用存储过程,以及删除,这一篇主要讲述变量、游标、还有流程控制。 变量 认识变量 先来说这个变量,这个变量和我们学习Java的时候,定义的那个...
  • 如何在触发器或存储过程中实现变量数据表 有一个需求,需要通过数据库系统级别实现向一组表中的一张插入数据,具体如下:1、定义一张表(命名为Tbl_List),存储了若干张表的表名2、定义了一张表(命名为A),促出了...
  • 今天我们要说的是Java中的变量,大家知道它是什么吗?又该如何定义呢?跟小编一起了解一下吧。什么是变量?在程序运行过程中,随时可能会产生一些临时数据,应用...变量如何定义声明?如何赋值?数据类型变量名 =值、表...
  • MySQL存储过程/变量

    2020-05-06 16:44:57
    存储过程存储过程sql命令MySQL变量定义功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • 今天写存储过程时,遇到要将表名最为参数...如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用 首先,我们来把场景描绘一下,比如下面的例子(当然是无法正确运行的): CREATE...
  • 存储过程 定义:是一个被命名的存储在服务器上的Transact-SQL语句的集合,是封装重复性工作的一种方法。 它支持用户声明变量、条件执行和其他强大的编程功能。一、 存储过程的优点:允许模块化程序设计,允许更快...
  • 用户定义变量和last_run_timedatetime一个13.6.4.1。局部变量DECLARE语法是不同的变量。尝试: SELECT last_run_time;更新例:/* CODE FOR DEMONSTRATION PURPOSES */DELIMITER $$CREATE PROCEDURE `sp_test`()...
  • 今天写存储过程时,遇到要将表名最为...如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用首先,我们来把场景描绘一下,比如下面的例子(当然是无法正确运行的):CREATE PROCEDURE `p...
  • 存储过程调试方法参考调试非常麻烦如何存储过程中注释?在存储过程编辑中无法注释,所以需要先将代码拷贝到普通查询页,在查询页注释好,然后再将代码拷贝回存储过程中,保存。变量定义定义varchar变量必须指明...
  • --创建存储过程的例子CREATE PROCEDURE proc_stuASDECLARE @writtenAvg float,@labAvg numeric(6,2)--定义变量SELECT @writtenAvg=AVG(written),@labAvg=AVG(lab) FROM Examprint '笔试平均分:'+convert(varchar(6)...
  • 如何定义一个变量v_orgid (结果集或者数组或者集合)来接收查询结果,如下: select org_id into v_orgid from table_A; 进一步,这样接收了数据之后,将 v_orgid 再作为查询条件 例如 这样 select * from table_B ...
  • 定义格式如下:过程名 proc[near/far] 过程过程名 endp过程名为合法的标识符,名字应该是唯一的。如果设置为near,那么只能被段内调用。far才可以被段外的代码调用。对于微型、小型、紧凑存储结构默认值为near...
  • 贴出解决办法问题描述:在存储过程中我定义了两个参数,@Filed代表一个列,@TableName代表表名,一个变量@SQLStr代表SQL语句,以下语句:SELECT @SQLStr=SELECT TOP 1 @Field FROM @TableName EXEC(@SQLStr)这两句都没问题...
  • 1.output是定义变量是不是可以返回值  2.output没有return从查询或过程中无条件退出的工功  3.return返回值在函数和过程定义时不需要用output来定义  我想用存储过程,是一个查询的存储过程. 把查询的记录...
  • oracle如何存储过程

    2016-12-08 12:54:30
    oracle写存储过程: CREATE OR REPLACE PROCEDURE P_name--存储过程名字 ( i_var in int, --输入参数1 ... --定义存储过程内部的局部变量 BEGIN --下面是存储过程的主体实现部分  v_STR := i_var
  • 定义如下存储过程: create PROCEDURE mytest ( @returnval decimal OUTPUT --定义一个输出变量 ) as DECLARE @amount DECIMAL DECLARE mycursor CURSOR FOR SELECT Amount FROM dbo.test --定义一个游标 OPEN ...
  • 展开全部实现的方bai法和详细的操du作步骤如下:zhi1、第一步,双击plsql图标进入登dao录界面,输入用专户名和密码属,然后传输数据库实例名称,如下图所示,然后...存在存储过程定义,包括输入变量,输出变量等。...
  • oracle存储过程的创建语法 create or replace procedure 存储过程名称 ( --定义输入、输出参数-- 参数名1 in 参数类型, ...--定义变量-- --变量名 变量数据类型;如: -- numCount integer; begin ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 492
精华内容 196
关键字:

存储过程如何定义变量