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存储过程生成唯一单据号 在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如 ...
随机推荐
- Python中下划线的5种含义
目录 单前导下划线 _var 当涉及到变量和方法名称时,单个下划线前缀有一个约定俗成的含义. 它是对程序员的一个提示 - 意味着Python社区一致认为它应该是什么意思,但程序的行为不受影响. 单末尾 ...
- scratch少儿编程第一季——02、scratch界面介绍
各位小伙伴大家好: 上期我们简单的介绍了Scratch的一些基本信息,和scratch软件的下载. 今天我们一起来了解一下Scratch的编程界面的介绍. 关于版本我考虑之后还是决定基于Scratch ...
- qt聊天室bug-- error: no matching function for call to 'Ui::Widget::setupUi(Widget*)' ui->setupUi(this); ^
- Linux下如何查看tomcat是否启动、查看tomcat启动日志
在Linux系统下,重启Tomcat使用命令的操作! 1.首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh ...
- Jmeter测试出现端口占用情况
Jmeter测试会出现端口占用情况 这边在这里做个记录,每次都要百度查询,刚好需要整理下,我就也记录一份到这里吧.感谢大佬的文章. 参考文章:windows下Jmeter压测端口占用问题 因Windo ...
- Python Selenium、PIL、pytesser 识别验证码
思路: 使用Selenium库把带有验证码的页面截取下来 利用验证码的xpath截取该页面的验证码 对验证码图片进行降噪.二值化.灰度化处理后再使用pytesser识别 使用固定的账户密码对比验证码正 ...
- C++ STL 之 函数对象适配器
谓词是指普通函数或重载的 operator()返回值是 bool 类型的函数对象(仿函数).如果operator 接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断 ...
- Computer Vision_33_SIFT:SIFTflow Dense Correspondence across Scenes and its Applications——2011
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- v-cloak 的用法
https://blog.csdn.net/knqiufan/article/details/81002957
- 学习笔记:Python序列化常用工具及性能对比
什么叫序列化?简单来讲就是将内存中的变量数据转而存储到磁盘上或是通过网络传输到远程. 反序列化是指:把变量数据从序列化的对象重新读到内存里. 下面我们一起来看看,python里面序列化常用的json. ...