mysql建立存储过程中如何判断一个数字的正负并使用select输出
MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地
测试表与测试数据CREATE TABLE TestMulToOne ( name VARCHAR(10), allTitles VARCHAR(200));INSERT INTO TestMulToOne VALUES ('张三', '程序员,系统管理员,网络管理员');INSERT INTO TestMulToOne VALUES ('李四', '项目经理,系统分析员'); DELIMITER //DROP FUNCTION GetTextCount ///**********-- 获取字符串中有几个部分.**********/CREATE FUNCTION GetTextCount(pSourceText VARCHAR(255), pDivChar CHAR(1))RETURNS TINYINTBEGIN -- 预期结果. DECLARE vResult TINYINT; -- 当前逗号的位置. DECLARE vIndex INT; -- 前一个逗号的位置. DECLARE vPrevIndex INT; -- 结果的初始值. SET vResult = 1; -- 查询第一个 逗号的位置. SET vIndex = INSTR(pSourceText, pDivChar); IF vIndex = 0 THEN -- 参数中没有逗号,直接返回. RETURN vResult; END IF; -- 初始化情况,前一个逗号不存在. SET vPrevIndex = 0; -- 循环处理。 WHILE vIndex > 0 DO -- 结果递增. SET vResult = vResult + 1; -- 前一个逗号的位置 = 当前逗号的位置 SET vPrevIndex = vIndex; -- 查询下一个逗号的位置. SET vIndex = LOCATE(pDivChar, pSourceText, vPrevIndex + 1); END WHILE; -- 返回结果. RETURN vResult;END;// DROP FUNCTION GetTextValue ///**********-- 获取字符串中具体某一个部分的数据.**********/CREATE FUNCTION GetTextValue(pSourceText VARCHAR(255), pDivChar CHAR(1), pIndex TINYINT)RETURNS VARCHAR(255) BEGIN -- 预期结果. DECLARE vResult VARCHAR(255); IF pIndex = 1 THEN SELECT SUBSTRING_INDEX(pSourceText, pDivChar, 1) INTO vResult; ELSE SELECT REPLACE( SUBSTRING_INDEX(pSourceText, pDivChar, pIndex), CONCAT(SUBSTRING_INDEX(pSourceText, pDivChar, pIndex - 1) , pDivChar), '') INTO vResult; END IF; -- 返回. RETURN vResult;END;//DELIMITER ;/*SELECT GetTextCount('程序员,系统管理员,网络管理员', ',') AS Co;SELECT GetTextValue('程序员,系统管理员,网络管理员', ',', 1) AS A, GetTextValue('程序员,系统管理员,网络管理员', ',', 2) AS B, GetTextValue('程序员,系统管理员,网络管理员', ',', 3) AS C;*/ SELECT t.name, GetTextValue(t.allTitles, ',', MaxNum.No) AS OneTitleFROM TestMulToOne t, (SELECT 1 No UNION ALL SELECT 2 No UNION ALL SELECT 3 No UNION ALL SELECT 4 No UNION ALL SELECT 5 No ) MaxNumWHERE GetTextCount(t.allTitles, ',') >= MaxNum.NoORDER BY t.name; +------+------------+| name | OneTitle |+------+------------+| 张三 | 系统管理员 || 张三 | 网络管理员 || 张三 | 程序员 || 李四 | 系统分析员 || 李四 | 项目经理 |+------+------------+5 rows in set (0.00 sec)
CREATE PROCEDURE testproc (IN v_i integer )BEGIN
if v_i > 0 then
select v_i as '负数';
else
select v_i as '正数';
end if;
END$$
delimiter ;
mysql 建立存储过程要写delimiter,后面的$是什么意思
mysql 建立存储过程要写delimiter,后面的$是什么意思 delimiter是mysql分隔符,在mysql客户端中分隔符默认是分号。delimiter $意思是设置了$作为分隔符,即执行mysql语句的时候以$作为结束的标志。一般使用完delimiter设置其他分隔符之后,需要重新设置回默认分隔符,命令:delimiter ;
mysql 数据库创建存储过程是怎么创建的?
创建存储过程 mysql> delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.mysql> create procedure sp_test(IN pi_id int, OUT po_name varchar(10))-> begin -> select * from test.tb_test;-> select tb_test.name into po_name from test.tb_test ...
mysql创建存储过程,为什么行不通?
那么首先需要检查数据库的存储引擎mysql> show variables like '%storage_engine%';+---+---+| Variable_name | Value |+---+---+| storage_engine | MyISAM |+---+---+1 row in set (0.00 sec)存储引擎为 InnoDB 的数据库, 能使用存储过程。mysql> show variables like '%...
如何创建MySQL存储过程可以返回一个表类型的数据
如何创建MySQL存储过程可以返回一个表类型的数据 首先需要知道“另一个存储过程”的结果集的所有列的类型。假设“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集 如下 CREATE...
mysql的存储过程怎么写
比如 if exists (select name from sysobjects where name = 'proc_ManagerLogin')begin drop procedure proc_ManagerLogin end go create procedure proc_ManagerLogin return bit output ,@username varchar(59),@password varchar(32)as begin if exists(select * from systemManager where adminName=@...
在MySQL中创建带有IN和OUT参数的存储过程的方法
MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地
mysql 建立存储过程要写delimiter,后面的$是什么意思
mysql系统默认 ;号为结束符号,mysql遇到;号即会执行,但在建立存储过程中,会有很多语句的结束,为了避免mysql在存储过程未完时就执行程序,需要另外设定一个结束符号;delimiter $即表示命名$号为结束符,而恢复;号为结束符号为 delimiter ;
mysql 建立存储过程要写delimiter,后面的$是什么意思
delimiter就是告诉mysql解释器,该段命令是否已经结束了,是否可以执行了。默认情况下,delimiter是分号;,遇到分号就执行。后面的双美元符号 就是告诉mysql,遇到双美元符号再执行
请问为什么我在mysql中创建存储过程的时候,这个存储过程是应
MySQL 里面, 建存储过程的时候,需要先 使用 DELIMITER 命令,将 命令终止符号,由默认的 ; 更换为另外一种符号。 否则 MySQL 解析你的存储过程的时候,遇到 ; 就认为 命令结束了。 也就是 create procedure pro_showsql() begin select * from sq; 这个时候,就认为结果了,然后去编译,结果...
mysql 建立存储过程要写delimiter,后面的$是什么意思
delimiter是设置默认字符 在存储过程开始的 delimiter $ 是碰上$字符就开始的结束的意思,end $ 则是碰上了$所以存储过程结束 end $后面还会跟着一个delimiter; 则是把默认字符重新设置成;
帅功美素: 你看下mysql这个用户下的proc表,就知道,其实你所定义的所有存储过程都存在这个表里面.
汉源县19125609633: Mysql存储过程加个判断条件,急求,好心人帮下忙,谢谢了! - ?
帅功美素: 存储过程啊.if status=1 or status=9 then {需要执行的语句} end if;我想你的意思是判断后再 SELECT tmpDeptLst.*,tbl_department.* FROM tmpDeptLst ,tbl_department where tmpDeptLst.id = tbl_department.ID and PARENT_ID is not null 后加个...
汉源县19125609633: 如何创建存储过程中判断一张表是否存在,如果存在向下执行,如果不存在,则返回 - ?
帅功美素: ORACLE: DECLARE A NUMBER; BEGIN select count(*) INTO A from user_tables where table_name = '....'; if a >0 then return 1;//存在 else return 0; end if; EXCEPTION WHEN OTHER THENNULL; END;
汉源县19125609633: mysql在存储过程中先判断数据库中是否存在table1表,有就删除,没有就新建 - ?
帅功美素: 是的 这个主要是在增删改查的时候用到 if TABLE1 EXISTING DROP TABLE1; CREATE TABLE
汉源县19125609633: MySQL判断索引是否存在的存储过程 - ?
帅功美素: 创建mysql数据库时需要创建索引,但是mysql并不有drop index index_name if exists on table_name这样的语法,所以写一个存储过程来判断,如果存在就删除后再创建新的索引.存储过程如下:-- -- procedure of delete index--drop procedure if ...
汉源县19125609633: mysql 存储过程中的 if exists 判断问题 - ?
帅功美素: mysql没有drop index index_name if exists on table_name这样的语法,所以写一个存储过程来判断,如果存在就删除后再创建新的索引.存储过程如下: -- -- procedure of delete index -- drop procedure if exists Del_idx; DELIMITER $$ CREATE ...
汉源县19125609633: Mysql存储过程是在创建时预编译还是在执行时预编译,怎么能看出来或者怎么测出来 - ?
帅功美素: 语法 show create {procedure|function} sp_name; 例如查看存储过程myPro的创建语句 show create procedure myPro; 查看自定义函数myFunc的创建语句 show create function myFunc;
汉源县19125609633: 创建存储过程的时候,如何判断记录集是否为空 - ?
帅功美素: If not exists(SELECT UserName,Password,Flag,Lastlogin,LastIP,Logincount,Locked FROM admin WHERE AdminID = @adminid ) RETURN "该管理员ID在数据库中不存在!" --end if END 记得好像没有end if 不知道搂住用的什么数据库------- ...
汉源县19125609633: 如何在存储过程中判断sql语句执行是否成功 - ?
帅功美素: 可以用这个语句判断 BEGIN TRY 需要执行的update或insert END TRY BEGIN CATCH 出错返回 END CATCH
汉源县19125609633: SQL SERVER下怎么写存储过程,能判断表中某列的内容是否为空 - ?
帅功美素: 系统函数 SELECT * FROM 表 WHERE 字段 is null 替换 空值SELECT ISNULL(字段,'替换值') from 表