存储过程中用游标联动插入(商品分类)

例子:往商品表插入的同时,也将对应的多个分类加入到商品分类表中

create PROCEDURE TProduct_ADD
@ProID bigint output, --自动编号
@ISBN nvarchar(50),
@pCode nvarchar(100),
@pName nvarchar(200),
@Unit nvarchar(50),
@price decimal(18,2),
@PurchasePrice decimal(18,2),
@Discount decimal(4,2),
@MembePrice decimal(18,2),
@MembePrice2 decimal(18,2),
@Press nvarchar(100),
@PressTime nvarchar(50),
@Editor nvarchar(200),
@TEditor nvarchar(200),
@StockNumber int,
@ProSmallImage nvarchar(200),
@ProBiglImage nvarchar(200),
@BriefIntro nvarchar(300),
@Remark nvarchar(MAX),
@ISHot char(1),
@ISNew char(1),
@ISTop char(1),
@ISBargain char(1),
@CreateTime datetime,
@ModifyTime datetime,
@AddedBy nvarchar(200),
@ISBuy nchar(1),
@ReturnPrice decimal(18,2),
@ISCheck char(1),
@storehouseID nvarchar(50),
@DelFlag char(1),
@EditionNum nvarchar(50),
@PCategriy nvarchar(50) --2,8,4

AS
INSERT INTO [TProduct](
[ISBN],[pCode],[pName],[Unit],[price],[PurchasePrice],[Discount],[MembePrice],[MembePrice2],[Press],[PressTime],[Editor],[TEditor],[StockNumber],[ProSmallImage],[ProBiglImage],[BriefIntro],[Remark],[ISHot],[ISNew],[ISTop],[ISBargain],[CreateTime],[ModifyTime],[AddedBy],[ISBuy],[ReturnPrice],[ISCheck],[storehouseID],[DelFlag],[EditionNum]
)VALUES(
@ISBN,@pCode,@pName,@Unit,@price,@PurchasePrice,@Discount,@MembePrice,@MembePrice2,@Press,@PressTime,@Editor,@TEditor,@StockNumber,@ProSmallImage,@ProBiglImage,@BriefIntro,@Remark,@ISHot,@ISNew,@ISTop,@ISBargain,@CreateTime,@ModifyTime,@AddedBy,@ISBuy,@ReturnPrice,@ISCheck,@storehouseID,@DelFlag,@EditionNum
)
SET @ProID = @@IDENTITY

--然后往商品分类表中添加记录

--需要把2,8,4东西,分开
declare @_classid BIGINT
declare rebate cursor --定义回扣游标
for select * from dbo.f_split(@PCategriy,‘,‘)//调用函数,实现(多个id号)字符串用‘,‘分割开

open rebate

fetch next from rebate into @_classid
declare @i int ;
set @i=1;
while @@fetch_status=0
begin
INSERT INTO [TProduct_Category] ( [productID] ,[PCategory] ) VALUES (@ProID ,@_classid)
fetch next from rebate into @_classid
end
--4.关闭游标
close rebate
--5.删除游标
deallocate rebate

//创建 f_split函数

create function [dbo].[f_split](@c varchar(2000),@split varchar(2))
returns @t table(col varchar(20))
as
begin

while(charindex(@split,@c)<>0)
begin
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),‘‘)
end
insert @t(col) values (@c)
return
end

存储过程中用游标联动插入(商品分类),布布扣,bubuko.com

时间: 2024-10-10 01:59:09

存储过程中用游标联动插入(商品分类)的相关文章

对sqlserver存储过程合游标的一些理解

在最近老板给我的数据库操作要求中,有一张类似购物清单样式的表,表中有客户ID,商品ID,商品数量,单价和商品总价,出售日期.还有一张商品折扣信息表,在这基础上商品价格同一商品价格会有差异,不同客户最高折扣额不同,折扣率也有差异,要求用sqlserver存储过程合游标表诉 一开始根本没有思路和头绪,听老大讲解是要用存储过程将查询到的数据存储好,再用游标循环遍历.对于存储过程合游标的表诉一直不太熟,之前只是将用sql语句查到的结果集放到存储过程里面,对于游标的了解不够深入.所以一开始也是想着用sql

Mysql 存储过程使用游标

-- 完整例子 CREATE PROCEDURE test BEGIN -- 定义参数    DECLARE _id INT; -- 定义游标    DECLARE no_more_products INT DEFAULT 0;    DECLARE RESULT_test CURSOR FORSELECT num1 from numtest; -- 如果NOT FOUND游标DECLARE  CONTINUE HANDLER FOR NOT FOUND  SET  no_more_produc

mysql存储过程之游标遍历数据表

原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT

时空插入商品分类

插入商品分类 insert into hzfa select * from openrowset('SQLOLEDB', '192.168.16.222'; 'SA'; 'dcyy',ksoa.dbo.hzfa) where hzcode='sp_init' order by hzflbh insert into hzfamx select * from openrowset('SQLOLEDB', '192.168.16.222'; 'SA'; 'dcyy',ksoa.dbo.hzfamx)

如何在网页中用html代码插入多个空格?

关于在网页中插入多个空格是html中很基础的一个知识点,相信学过html的都会,那今天为什么要介绍这个呢?因为很多人(包括我)要用的时候都把html空格符号代码忘了.因为做开发有时候长时间不涉及写html代码,等再回头用的时候,可能就把空格符的几个单词忘了.在这还是写详细一点吧!毕竟还有一些初学者不会,方面他们参考学习.接下来就是如何在网页中用html代码插入多个空格的? 插入多个空格 一.html空格符号代码 :一个字符的半角的不断行的空格,如果需要在网页中插入多个空格,可以将“”代码写多遍:

在存储过程中用动态SQL建表后如果用PL/SQL插入

请教各位老师一个问题,如果想把一个表的建立并插入数据放到一个存储过程中,应该要怎么处理呢,如果插入数据的表在存过中插入数据之前未建立,存储过程会报错提示表不存在,导致存储过程失效,有没有什么变通的办法呢? 之所以不在存储过程之外建表是想定时执行这个存储过程,如果存在表被DROP的情况,就会导致存储过程插入数据报错了,所以想在存储过程中自动把表的建立和处理一起考虑了,插入数据不考虑使用动态SQL来插入,因为这样的话就不能使用plsql的东西了(比如远程链接优化的提示),请教怎么处理,谢谢啦! 简单

SQL server2014数据库存储过程 实现游标循环读取 循环插入数据

USE [Text] GO /****** Object: StoredProcedure [dbo].[TT] Script Date: 2020/3/6 11:37:45 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Da

oracle查询优化,存储过程select表循环插入另一个表,以及索引重建

查询语句pl/sql中用F5优化语句 ORACLE的explain plan工具的作用只有一个,获取语句的执行计划1.语句本身并不执行,ORACLE根据优化器产生理论上的执行计划2.语句的分析结果存放在表PLAN TABLE中 select * from TABLE where NOWTIME >=to_date('20160101','yyyy-mm-dd') and NOWTIME < to_date('20160102','yyyy-mm-dd') 通过截图显示select语句是走索引的

sql server 函数,存储过程,游标以及while和if语句的嵌套使用

编写这个存储过程的主要原因是自己太懒,不愿意每天往表里面做数据,所以就写了他.不仅仅是学习,也是自己的锻炼. USE [oaerp] GO /****** Object:  StoredProcedure [dbo].[s_Get_AutoYh]    Script Date: 02/11/2015 17:17:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==============================