delimiter // create PROCEDURE usp_randCardID() BEGIN @cardid=concat('10103576',right(rand(),8)); END //

时间: 2024-01-14 15:02:27 浏览: 24
这是一个 MySQL 存储过程的示例,用于生成随机的银行卡号。下面是对代码的解释: - `delimiter //` 语句用于更改语句分隔符,避免存储过程中的分号与 SQL 语句中的分号冲突。 - `create PROCEDURE usp_randCardID()` 语句用于创建一个名为 usp_randCardID 的存储过程。 - `BEGIN` 语句用于标记存储过程的开始。 - `@cardid=concat('10103576',right(rand(),8));` 语句用于生成随机的银行卡号。其中,`rand()` 函数用于生成一个 0 到 1 之间的随机浮点数,`right()` 函数用于获取该浮点数的后 8 位数字,最后使用 `concat()` 函数将这 8 位数字与一个固定的前缀字符串 '10103576' 连接起来,得到一个长度为 16 的银行卡号。`@cardid` 则是一个 MySQL 变量,用于存储生成的银行卡号。 - `END` 语句用于标记存储过程的结束。 这个存储过程可以使用 `CALL` 语句来执行,例如: ``` CALL usp_randCardID(); SELECT @cardid; ``` 第一条语句用于调用存储过程,生成一个随机银行卡号并存储到 `@cardid` 变量中。第二条语句则用于查询该变量的值,以查看生成的银行卡号。
相关问题

delimiter // create PROCEDURE usp_randCardID() BEGIN @cardid=concat('10103576',right(rand(),8)); END //哪里错了

在这个存储过程中,虽然语法没有错误,但是缺少了输出参数或 SELECT 语句,导致无法获取生成的银行卡号。你可以将存储过程修改为带有输出参数的形式,例如: ``` delimiter // create PROCEDURE usp_randCardID(OUT cardid VARCHAR(16)) BEGIN SET cardid = concat('10103576',right(rand(),8)); END // ``` 在这个修改后的存储过程中,我们添加了一个名为 `cardid` 的输出参数,用于将生成的银行卡号返回给调用方。在存储过程中,我们将生成的银行卡号存储到该输出参数中,然后可以通过 `CALL` 语句来调用它,例如: ``` CALL usp_randCardID(@cardid); SELECT @cardid; ``` 第一条语句用于调用存储过程,并将生成的银行卡号存储到 `@cardid` 变量中。第二条语句则用于查询该变量的值,以查看生成的银行卡号。

DELIMITER // CREATE PROCEDURE usp_openAccount(IN cName char(8), IN PID VARchar(18),IN tel char(20), IN oMoney decimal(20,2),IN sName VARchar(20),IN addr varchar(50)) BEGIN DECLARE sID INT; DECLARE cur_id INT; SELECT savingID INTO sID FROM depoist WHERE savingName= sName; CALL usp_randCardID(@cardId); INSERT INTO userInfo(customerName,PID,telephone,address ) VALUES(cName,PID,tel,addr); SELECT customerID INTO cur_id FROM userInfo WHERE customerName=CName; INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) VALUES(@cardId,sID,oMoney,openMoney,cur_ID); END // DELIMITER ; select * from view_userInfo ORDER BY `客户编号`; select * from view_customerid ORDER BY `客户名字`; CALL usp_openAccount('王小六','554455881017878153','0999-67891234',1,'活期','山东某某市'); select * from view_userInfo ORDER BY `客户名字`; select * from view_cardInfo ORDER BY `客户名字`;哪里有问题

这段代码中存在以下问题: 1. 存储过程中的变量声明不完整,缺少了一部分。 2. 存储过程中的参数名与调用时的参数名不一致,需要保持一致。 3. 存储过程中的第7行应该是 `SELECT savingID INTO sID FROM deposit WHERE savingName = sName;`,而不是 `SELECT savingID INTO sID FROM depoist WHERE savingName= sName;`,存在拼写错误。 4. 存储过程中的第8行应该是 `CALL usp_randCardID(@cardId);`,而不是 `CALL usp_randCardID(cardId);`,需要添加 `@` 符号。 5. 存储过程中的第11行应该是 `INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) VALUES(@cardId,sID,oMoney,oMoney,cur_id);`,而不是 `INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) VALUES(@cardId,sID,oMoney,openMoney,cur_ID);`,需要将 `openMoney` 改为 `oMoney`,因为 `openMoney` 并没有定义。 6. 存储过程中的变量名需要保持一致,例如 `cur_id` 和 `CName` 应该都是小写。 7. 存储过程中的第2行和第3行的变量类型应该保持一致,例如 `IN PID varChar(18)` 应该改为 `IN PID varchar(18)`。 修改后的代码如下: ``` DELIMITER // CREATE PROCEDURE usp_openAccount( IN cName VARCHAR(8), IN pID VARCHAR(18), IN tel VARCHAR(20), IN oMoney DECIMAL(20,2), IN sName VARCHAR(20), IN addr VARCHAR(50) ) BEGIN DECLARE v_sID INT; DECLARE v_cur_id INT; SELECT savingID INTO v_sID FROM deposit WHERE savingName = sName; CALL usp_randCardID(@cardId); INSERT INTO userInfo(customerName, PID, telephone, address) VALUES(cName, pID, tel, addr); SELECT customerID INTO v_cur_id FROM userInfo WHERE customerName = cName; INSERT INTO cardInfo(cardID, savingID, openMoney, balance, customerID) VALUES(@cardId, v_sID, oMoney, oMoney, v_cur_id); END// DELIMITER ; ``` 同时,最后一行的存储过程调用也应该添加 `DELIMITER` 和 `CALL` 语句,如下所示: ``` DELIMITER // CALL usp_openAccount('王小六', '554455881017878153', '0999-67891234', 1, '活期', '山东某某市'); DELIMITER ; ``` 另外,如果这段代码存在其他问题,还需要针对具体问题进行修改。

相关推荐

简单说明以下数据库代码的需求分析create database 学生选课; use 学生选课; source C:\Users\Administrator\Desktop\xuexi.sql show tables; select * from student; set @c1=1,@c2=2,@c3=3; select @c1,@c2,@c3; delimiter // create function fn1() returns datetime reads sql data begin return now(); end// select fn1() as 当前时间// select now()// delimiter // create function fn2(a int,b int) returns int reads sql data begin return a+b; end// select fn2(321,123)// select fn2(9876,3546)// show create function fn1\G drop function fn1// create procedure proc1() begin declare a int default 100; set a=a+50; select a; end// call proc1()// delimiter // create procedure aaa() begin declare v varchar(5); set v='你好'; if v is null then select '是空值'; else select '不是空值'; end if; end// call aaa()// delimiter // create procedure bbb() begin declare v int; set v=100; case v when 1 then select'值是1'; when 2 then select'值是2'; else select '值不是1也不是2'; end case; end // call bbb()// delimiter // create procedure xunhuan() begin declare pl int default 0; my_loop:loop set pl=pl+1; select '你真好看'; if pl>10 then leave my_loop; end if; end loop my_loop; end// call xunhuan()// delimiter // create procedure p_student () begin select *from student; end// call p_student()// desc student// delimiter // create procedure p_student2(dept varchar(8)) begin select * from student where sdept=dept; end// call p_student2('云计算技术')// call p_student2('人工智能系')// call p_student2('大数据技术')// delimiter // create procedure p_student3(sex char(2), out renshu int) begin if sex='男' then select count(ssex) into renshu from student where ssex='男'; else select count(ssex) into renshu from student where ssex='女'; end if; end// call p_student3('男', @renshu)// select @renshu // call p_student3('女', @renshu)// select @renshu// show create procedure p student2\G drop procedure p student2// create database 网上书店数据库; use 网上书店数据库; source C:\Users\Administrator\Desktop\online bookstore.sql show tables; select * from user; delimiter // create procedure proc_1() begin select * from user; end// call proc_1()// delimiter // create procedure proc_2(昵称 varchar(20),out 积分 int) begin select score into 积分 from user where uname=昵称; end// call proc_2( 平平人生,@积分)// select @积分// call proc_2(感动心灵’,@积分)// select @积分//

最新推荐

recommend-type

Python源码-数学美之樱花.py

Python源码-数学美之樱花
recommend-type

蚁群算法(ACO)求解TSP问题,MATLAB源码,代码注释详细,可根据自身需求拓展应用

蚁群算法(ACO)求解TSP问题,MATLAB源码,代码注释详细,可根据自身需求拓展应用
recommend-type

2024年5月最新采集大众点评全国(内地)-学习培训大类-店铺基础信息,93余万家

2024年5月最新采集大众点评全国(内地)-学习培训大类-店铺基础信息,93余万家。此处仅展示1万家,全量也有。 2024年5月最新大众点评店铺基础信息采集。含美食、休闲娱乐、结婚、电影演出赛事、丽人、酒店、亲子、周边游、运动健身、购物、家装、学习培训、医疗健康、爱车、宠物等十几大类共几千万家店铺信息。
recommend-type

My-Graduation-Project-demo

服务器
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用matlab绘制高斯色噪声情况下的频率估计CRLB,其中w(n)是零均值高斯色噪声,w(n)=0.8*w(n-1)+e(n),e(n)服从零均值方差为se的高斯分布

以下是用matlab绘制高斯色噪声情况下频率估计CRLB的代码: ```matlab % 参数设置 N = 100; % 信号长度 se = 0.5; % 噪声方差 w = zeros(N,1); % 高斯色噪声 w(1) = randn(1)*sqrt(se); for n = 2:N w(n) = 0.8*w(n-1) + randn(1)*sqrt(se); end % 计算频率估计CRLB fs = 1; % 采样频率 df = 0.01; % 频率分辨率 f = 0:df:fs/2; % 频率范围 M = length(f); CRLB = zeros(M,1); for
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依