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存储过程生成唯一单据号 在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如 ...
随机推荐
- MongoDB部分
- Linux 生成SSL证书 供 nginx使用
首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后他会要求你输入这个key文件的密码.不推荐输入.因为以后要给nginx使用.每次rel ...
- JSON序列化必看以及序列化工具类
1.要序列化的类必须用 [DataContract] 特性标识 2.需要序列化的属性应用 [DataMember] 特性标识,没有该特性则表示不序列化该属性.类亦如此! 3.可以网络上找封装好 ...
- 3D数学基础_图形与游戏开发
https://blog.csdn.net/popy007/article/list/2?t=1& //向量计算相关文章 https://www.baidu.com/link?url=48C ...
- HTTP method GET is not supported by this URL
Servlet eroor:HTTP method GET is not supported by this URL 错误提示: type: Status report message: HTTP m ...
- tfs如何为工作项添加变更集
今天工作中遇到的,可惜之前没怎么用过TFS. 我这是最后一次签入的时候关联了工作项.目的是要把先前签入的绑定到该任务上. 团队自愿管理器->查找历史记录->双击最后一次绑定工作项的变更集- ...
- mini.DataGrid使用说明
mini.DataGrid表格.实现分页加载.自定义列.单元格渲染.行编辑器.锁定列.过滤行.汇总行等功能.Extend mini.PanelUsage <div id="dat ...
- 伪元素before和after本质
之所以被称为伪元素,是因为他们不是真正的页面元素,html没有对应的元素,但所有的用法和表现行为和真正的页面元素是一样的,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似页面的谋些元素,实际 ...
- ARP、Proxy ARP、Gratuitous ARP
Proxy ARP 什么是Proxy ARP? 一个主机A(通常是路由器)有意应答另一个主机B的ARP请求(ARP requests).主机A通过伪装其身份,承担起将分组路由到真实目的地的责任.代理A ...
- Ubuntu系统---开机总会显示错误报告处理
Ubuntu系统---开机总会显示错误报告处理 使用ubuntu16.04,开机总会显示错误报告,略烦人,查找方法关闭.一.临时关闭sudo service apport stop(重启后失效) 二. ...