sql 存储过程记录
-- exec sp_helptext add_book1 CREATE proc add_book1 --创建存储过程 @DocCode VARCHAR() --创建参数 as BEGIN INSERT INTO book_new_msg ( book_num, book_msg, book_name, book_class, price, ware_people, Docdate, doctype ) SELECT a.book_num, a.boo_msg, a.book_name, a.book_class, a.price, b.ware_people, b.DocDate, b.doctype FROM BOOK_MSG1 a INNER JOIN BOOK_WARE1 b ON a.DocCode = b.Doccode WHERE a.DocCode = @DocCode END BEGIN CREATE TABLE #T (book_num INT, book_sum INT) INSERT INTO #T (book_num, book_sum) SELECT book_num, SUM (book_count) FROM book_msg1 WHERE DocCode= @DocCode GROUP BY book_num
UPDATE a SET book_sum = ISNULL(a.book_sum, ) + b.book_sum FROM book_sun a INNER JOIN #T b ON a.book_num = b.book_num INSERT INTO book_sun (book_num, book_sum) SELECT a.book_num, a.book_sum FROM #t a LEFT JOIN book_sun b ON a.book_num = b.book_num WHERE ISNULL(b.book_num, '') = '' END
改 存储过程利用 inner join 和left join 减少了 if else 判断的操作提高了效率
/*
成品出货日期(取最早)对应 入库的时间
fqh 2019-7-2
*/
CREATE PROCEDURE USP_PROD_DELIVERY
(
@begindate DATETIME,
@enddate DATETIME,
@cltcodehd VARCHAR() = '',
@cltnamehd VARCHAR() = '',
@stcodehd VARCHAR() = '',
@stnamehd VARCHAR() = ''
)
AS
BEGIN
--返回表
CREATE TABLE #T
(
lot_no VARCHAR(),
style VARCHAR(),
modelcode VARCHAR(),
docdate DATETIME,
cltcode VARCHAR(),
cltname VARCHAR(),
stcode VARCHAR(),
stname VARCHAR(),
out_qty INT,
in_date VARCHAR(),
in_qty INT
)
CREATE INDEX IX_#T_LOT_NO ON #T(LOT_NO)
INSERT INTO #T(lot_no,docdate,stcode,out_qty,in_date,in_qty)
SELECT
m.refcodeitem,m.out_date,m.stcode,m.out_qty,n.periodid,n.in_qty
FROM
(
-- 取出指令最早出库时间&累计出库数
SELECT
b.refcodeitem,MIN(a.docdate) AS out_date,a.stcode,SUM(b.basedigit) AS out_qty
FROM imatdochd a WITH(NOLOCK)
INNER JOIN imatdocitem b WITH(NOLOCK) ON a.doccode = b.doccode
WHERE
a.docdate >= @begindate
AND a.docdate <= @enddate
AND (@stcodehd = '' OR a.stcode = @stcodehd)
AND (@cltcodehd = '' OR a.cltcode = @cltcodehd)
AND a.formid =
AND a.docstatus >=
AND LEFT(b.refcodeitem,) NOT IN('SC')
GROUP BY b.refcodeitem,a.stcode
) m
INNER JOIN
(
-- 取出每次指令入库时间&数量
SELECT
b.refcodeitem,a.periodid,a.stcode,SUM(b.basedigit) AS in_qty
FROM
imatdochd a WITH(NOLOCK)
INNER JOIN imatdocitem b WITH(NOLOCK) ON a.doccode = b.doccode
WHERE
a.formid =
AND a.docstatus >=
GROUP BY b.refcodeitem,a.periodid,a.stcode
) n
ON m.refcodeitem = n.refcodeitem AND m.stcode = n.stcode
UPDATE a
SET modelcode = b.modelcode,
style = b.style,
cltname = b.cltname
FROM #t a INNER JOIN proorderhd b WITH(NOLOCK) ON a.lot_no = b.predoccode
UPDATE a
SET stname = b.stname
FROM #t a INNER JOIN ostorage b WITH(NOLOCK) ON a.stcode = b.stcode
SELECT *FROM #t ORDER BY docdate ASC
DROP TABLE #T
END
使用索引降低查询速度, 使用聚合函数 获取查询内容, 使用select 套select 加inner join 获取 链接数据
update 修改 数据 ,利用 ''update set 字段=from 表 inner join 表 on 字段=字段'' 的方式 进行修改
UPDATE pc_forecast_mtl_type set memo=(
SELECT a.memo from MTL_STORE_AGE_DETAIL_INPUT a INNER JOIN pc_forecast_mtl_type b
on a.mtl_no=b.matcode ) ,
plandate =(
SELECT a.plandate from MTL_STORE_AGE_DETAIL_INPUT a INNER JOIN pc_forecast_mtl_type b
on a.mtl_no=b.matcode where a.mtl_no=b.matcode ) update a
set memo = b.memo
from pc_forecast_mtl_type a inner join MTL_STORE_AGE_DETAIL_INPUT b
on a.matcode = b.mtl_no
where a.matcode =b.mtl_no
insert into select 的使用
INSERT INTO #t_mtl(vndcode,matcode) SELECT vndcode,matcode FROM proprice_sheet WHERE (ISNULL(@vndcodehd,'') = '' OR vndcode = @vndcodehd) AND (ISNULL(@matcodehd,'') = '' OR matcode = @matcodehd) AND ISNULL(check_flag,) =
返回数据 类型结果
/*
替换核料单里成易料号 为 维涛料号
*/ alter PROCEDURE USP_UPT_CY_MTL_NO
@doccode VARCHAR(),
@memo VARCHAR() OUTPUT
AS
BEGIN -- 把成易料号转成 维涛料号
UPDATE a
SET matcode = b.matcode
FROM probomitem a INNER JOIN proimatgeneral b ON a.matcode = cy_code
WHERE a.doccode = @doccode --根据维涛料号取得 材料名称等资料
UPDATE probomitem
SET matname = b.matname,
colortext = b.color,
bomspecial = b.standardmode,
baseuom = b.uom,
uomrate = b.uomrate,
baseuomrate = b.baseuomrate
FROM probomitem a INNER JOIN proimatgeneral b ON a.matcode = b.matcode
WHERE a.doccode = @doccode --取出成易料号无对应的维涛料号资料
SELECT @memo = STUFF((SELECT DISTINCT ','+ a.matcode FROM probomitem a
LEFT JOIN proimatgeneral b WITH(NOLOCK) ON a.matcode = b.cy_code
WHERE doccode = @doccode
AND ISNULL(b.matcode,'') = '' for xml path('')),,,'') SET @memo = @memo + ' 材料未编对应料号!' SELECT @memo END
sql 存储过程记录的更多相关文章
- VBA 从sql存储过程-记录集-导入
cnn.Open cnnstr cmd.ActiveConnection = cnn cmd.CommandTimeout = 120 cmd.CommandText = "dbo.t_bi ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- sql存储过程几个简单例子
导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解. 例1: cr ...
- SQL 存储过程入门(事务)(四)
SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
- 查询数据库后台Block 的Sql存储过程
查询数据库后台Block 的Sql存储过程 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO /*记录SQL Server的阻塞情况 wang 200 ...
- SQL存储过程和函数
SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定 ...
- 用SQL存储过程生成唯一单据号
用SQL存储过程生成唯一单据号 在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如 ...
随机推荐
- 剑指offer53:表示数值的字符串,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是
1 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3 ...
- PHP切割整数工具,类似微信红包金额分配
Composer地址:https://packagist.org/packages/werbenhu/php-number-slicing GitHub地址:https://github.com/we ...
- WUTOJ 1284: Gold Medal(Java)
1284: Gold Medal 题目 有N个砝码,重量为:3i-1(1<=i<=N),有一块重量为 W 的金牌.现在将金牌放在天平的左边.你需要将砝码放在左边或右边使得天平平衡,如果 ...
- redis源码解读--内存分配zmalloc
目录 主要函数 void *zmalloc(size_t size) void *zcalloc(size_t size) void zrealloc(void ptr, size_t size) v ...
- C语言之反汇编揭秘
title: 'C语言之反汇编揭秘' tags: 汇编与反汇编 categories: 汇编与反汇编 copyright: true abbrlink: 'b1c9' date: 2019-09-07 ...
- Swarm系列7--存储介绍
存储介绍 1. 存储使用 与docker一样,在使用swarm服务级别的时候可以定义服务的存储需求, docker存储介绍参考: Docker之应用数据管理(volume/bind mount/tmp ...
- (十五)SpringBoot之使用Redis做缓存数据
一.添加Redis依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- zookeeper安装和使用 windows环境
简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...
- Java中常见时间类的使用
模拟场景针对于常用的操作API,比如流操作(字符流.字节流),时间操作等,仅仅了解概念性的定义终究是无法了解该类的用途和使用方式:这种情况在使用的时候便一脸茫然,脑海中映射不到对应的知识点.本篇博客将 ...
- PHP函数问题
有时候,运行nginx和PHP CGI(PHP FPM)web服务的Linux服务器,突然系统负载上升,用top命令查看,很多phpcgi进程的CPU利用率接近100%后来通过跟踪发现,这种情况与PH ...