数据库lib7第4题创建存储过程
1.
传入2个字符串变量,其中,每个字符串是用分号(;)分隔的字串形式,
比如str1=’ab12;ab;cccc;tty’, str2=’1;6sf;8fffff;dd’,
注意,字符串是用户输入的,不能固定值、长度、和分号个数。
2.
执行完毕存储过程后,要求根据分号提取字符串的字串,并一一插入到表Kc中。
例如上面的str1, str2传入后,要求执行完毕存储过程后,表Kc中的值如下所示(开始表中没有数据)
代码如下:
create proc insert_data
@str1 varchar(MAX),
@str2 varchar(MAX)
as
begin
declare @len1 int,
@len2 int,
@pos1 int,
@pos2 int,
@start_point1 int,
@start_point2 int,
@subString1 varchar(MAX),
@subString2 varchar(MAX)
select @len1 = len(@str1);
select @len2 = len(@str2);
select @start_point1 = 1;
select @start_point2 = 1;
while (1 > 0)
begin
select @pos1 = charindex(';', @str1, @start_point1);
select @pos2 = charindex(';', @str2, @start_point2);
if (@pos1 = 0 and @pos2 = 0)
begin
select @subString1 = substring(@str1, @start_point1, @len1-@start_point1+1);
select @subString2 = substring(@str2, @start_point2, @len2-@start_point2+1);
insert into Kc values(@subString1, @subString2);
break;
end
else if (@pos1 = 0)
begin
select @subString1 = NULL;
select @subString2 = substring(@str2, @start_point2, @pos2-@start_point2);
end
else if (@pos2 = 0)
begin
select @subString2 = NULL;
select @subString1 = substring(@str1, @start_point1, @pos1-@start_point1);
end
else
begin
select @subString1 = substring(@str1, @start_point1, @pos1-@start_point1);
select @subString2 = substring(@str2, @start_point2, @pos2-@start_point2);
end
insert into Kc values(@subString1, @subString2);
select @start_point1 = @pos1 + 1;
select @start_point2 = @pos2 + 1;
if (@start_point1 > @len1 and @start_point2 > @len2)
break
end
end
数据库lib7第4题创建存储过程的更多相关文章
- SQLServer创建用户、数据库、表、约束、存储过程、视图
--创建登录账户和数据库用户 ' exec sp_grantdbaccess 'sysAdmin','aa' --给数据库用户赋权限 grant select,update,insert,delete ...
- 利用navicat创建存储过程、触发器和使用游标的简单实例
利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报 分类: 数 ...
- SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过
SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过 存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...
- MYSQL数据库重点:自定义函数、存储过程、触发器、事件、视图
一.自定义函数 mysql自定义函数就是实现程序员需要sql逻辑处理,参数是IN参数,含有RETURNS字句用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句. 语法: 创建: ...
- Oracle数据库学习 视图、序列及存储过程
视图(View) 视图也被称作虚表,也就是虚拟的表,是一组数据的逻辑表示. 视图对应一个select语句,结果集被赋予一个名字,也就是视图的名字. 视图本身不包含任何数据,它只是包含映射到基表的一个查 ...
- Oracle 奇葩的问题:创建存储过程没有反应
问题描述:需要在oracle 数据库中再创建一个数据库(数据库实例)然后作为临时数据库,一切成功: 现在需要在数据库中新建一个表空间然后创建用户,使用创建的用户登录创建一个存储过程,执行提交刷新一下, ...
- MySQL的一些基本查询,创建存储过程等
常用的查询条件有1.比较:=,<,>,<=,>=,!=,<>,!>,!< 2.确定范围:between and,not bet ...
- SQL 创建存储过程,让主键自增
1. 首先创建存储过程: 2. 然后分别创建序列,生成基金公司编号.基金代码.活期账号.理财账号.基金账户.合同号.要求如下: 基金公司编号,字母K+5位数字. 基金代码,字母V+6位数字. 活期 ...
- SQLServer之创建存储过程
创建存储过程注意事项 在 SQL Server. Azure SQL Database.Azure SQL 数据仓库和并行数据库中创建 Transact-SQL 或公共语言运行时 (CLR) 存储过程 ...
随机推荐
- Ionic 分享功能(微博 微信 QQ)
1.安装插件 cordova plugin add cordova-plugin-wechat --variable wechatappid=你申请微信appid cordova plugin add ...
- touch滑动事件---简单小案例
html: <!--导航栏头部--><div class="type_nav"> <ul class="clearfix " v- ...
- 原生 js 实现摇一摇功能
参考此大牛的博客:https://blog.csdn.net/chclvzxx/article/details/46325053
- hibernate多表关联CascadeType类型的选择
CascadeType.REMOVE//慎用 Cascade remove operation,级联删除操作.删除当前实体时,与它有映射关系的实体也会跟着被删除. CascadeType.MERGE ...
- spring基于接口的代理报错
报错: 1.在service层加上@Transactional注解.浏览器端报错(如下),eclipse控制台无信息 2.去掉@Transactional注解,无报错,但是数据库没有信息插入. 解决方 ...
- jmeter参数化之配置元件CSV控件
1. 用badboby进行录制,录制完成后保存,用JMeter格式进行保存,如:登陆.jmx 2. 在jmeter中打开保存的文件登陆.jmx. 3. 对登陆账号和密码进行参数 ...
- 基于TensorFlow理解CNN中的padding参数
1 TensorFlow中用到padding的地方 在TensorFlow中用到padding的地方主要有tf.nn.conv2d(),tf.nn.max_pool(),tf.nn.avg_pool( ...
- Redis源码解析:29事务
Redis通过MULTl,EXEC,WATCH,DISCARD等命令来实现事务(transaction)功能. 事务从MULTI命令开始,之后,该客户端发来的其他命令会被排队,客户端发来EXEC命令之 ...
- 【html、CSS、javascript-3】几个基本元素
HTML 元素指的是从开始标签到结束标签的所有代码. 开始标签 元素内容 结束标签 <h1> h标签用来表示标题 </h1> <p> p标签表示一个段落 </ ...
- 微信Web开发者工具报错:net::ERR_BLOCKED_BY_CLIENT
今天在微信调试琳德的拼团,用了挺久之后,输入什么测试地址:发现页面空白,console提示身份验证网址错误,错误类型为:net::ERR_BLOCKED_BY_CLIENT, 尝试了好多次.以为是我的 ...