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存储过程生成唯一单据号 在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如 ...
随机推荐
- vm启动时通过U盘安装的方法
vm启动时通过U盘安装的方法 增加一个以U盘为硬盘的方法,通过boot中设置该硬盘启动后重新ghost或者安装win10X64位. 在虚拟机中增加一个硬盘,第二部设置为物理硬盘,选在对 ...
- T100——错误信息提示传入参数显示
LET l_str1 = l_xccc.xccc901LET l_str2 = l_inat015LET l_str = l_str1.trim(),'|',l_str2.trim() CALL cl ...
- ActiveMQ Queue示例
一.Queue 发送 public class JmsSend { public static void main(String[] args) throws JMSException { Conne ...
- python 创建es mapping
import requests def get_(): url = "http://127.0.0.1:9200/indextest/_mapping?pretty" ss = r ...
- Yet Another Problem On a Subsequence CodeForces - 1000D (组合计数)
大意:定义一个长为$k>1$且首项为$k-1$的区间为好区间. 定义一个能划分为若干个好区间的序列为好序列. 给定序列$a$, 求有多少个子序列为好序列. 刚开始一直没想出来怎么避免重复计数, ...
- 夯实基础:彻底搞清楚Cookie 和 Session 关系和区别(转)
原文地址:http://www.sohu.com/a/281228178_120047080 网络请求中的cookie与set-Cookie的交互模式和作用:https://my.oschina.ne ...
- 将自定义dockerfile生成的image推送到仓库中
本文为以阿里云的案例方法,其他方法未尝试 1.注册阿里云账号 2.设置密码并通过docker登录 3.创建命名空间 4.创建镜像仓库 创建仓库时,需要选择代码源的仓库储存的方式,这里我用的是gitHu ...
- (四)lucene之文本域加权
一.前言 1.1 应用场景 有时在搜索的时候,会根据需要的不同,对不同的关键值或者不同的关键索引分配不同的权值,让权值高的内容更容易被用户搜索出来,而且排在前面. 为索引域添加权是再创建索引之前,把索 ...
- 【转】[STL]vector和deque的内存释放(clear)
vector的clear成员函数可以清除vector中的元素,使其大小减至0.但它却不能减小vector占用的内存. [cpp] view plain copy int main() { vector ...
- Lua table直接索引VS缓存索引性能测试小示例
local p = {} p.t = {} p.t.p = {} p.t.p.t = {} p.t.p.t.p = {} p.t.p.t.p.t = {} p.t.p.t.p.t.p = {} p.t ...