SQL存储过程例子
存储过程呢,学校里学习的都是简单的。这里是我在工作的时候写的存储过程,贴出来,其中公司相关我都XXX代替了
(注:这个例子可以算是动态SQL的例子了,写死的是静态SQL,这个很灵活的传入参数的是动态SQL,静态的一次编译多次调用具有安全性。动态的需要次次编译,强大但有安全隐患)
USE [XX]
GO
/****** Object: StoredProcedure [dbo].[OneTable] Script Date: 2018/1/12 9:41:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[OneTable] @TableName nvarchar(50)
as
begin
declare @sql nvarchar(1000)
select @sql=isnull(@sql+',','')+quotename(Name) from syscolumns where id=object_id(@TableName) and name not in ('DATE','TIME')
declare @sqlstr varchar(4000)
set @sqlstr='select a.DateTime,b.NodeID,a.SupplyNum,301 as FactoryID from
(
SELECT rtrim(convert(varchar,replace([Date],''/'',''-'')))+'' ''+ ltrim(convert(varchar,[Time])) [DateTime] ,P.SupplyNum,p.Supplier
FROM
(
SELECT top 1 *
FROM '+@TableName+'
)T
UNPIVOT
(
SupplyNum FOR Supplier IN
('+@sql+')
) P) a inner join XXXX.dbo.XXX b on a.Supplier=b.TagName' ------insert单张表的数据到XXX
insert XXXX.dbo.XXX exec(@sqlstr) ------delete
declare @mindatestr varchar(50)
set @mindatestr=CONVERT(VARCHAR(100),getdate()-3,20)
delete from XXXX.[dbo].XXX where DateTime<@mindatestr end
现在我需要只插入20分钟以内的数据,我顿时慌了,动态SQL无法取里面的时间怎么办~~我这是蠢成猪的表现了~~
经过同事的开导我才恍然大悟,在动态SQL里面加一个时间判断不就好了嘛。。。
and DATEDIFF(MINUTE,a.DateTime,GETDATE())<20
像这样。。。人蠢了。。。拦都拦不住。。。
2018.8.4日更新
在做数据同步的时候也可以使用这个存储过程,很好用。有一个问题,你在同步数据的时候,要做一个时间的增量判断。不要整张表整张表的数据插入同步。应该是只同步需要更新的数据。
and DateTime> dateadd(MINUTE,-1,GETDATE())
例如上面的sql语句,我同步的那个表的数据是一分钟更新一次的,那我就一分钟同步一次。同步的时候只同步上一分钟的数据。这样就保证了你同步的只是最新的数据。
SQL存储过程例子的更多相关文章
- sql 存储过程例子和学习demo
-------------------------------------------------------------------------- ------------------------- ...
- sql存储过程几个简单例子
导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解. 例1: cr ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- SQL 存储过程入门(事务)(四)
SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
- (转载)delphi 中如何调用sql 存储过程
delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...
- SQL存储过程和函数
SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定 ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- SQL存储过程的调用及写法
调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...
随机推荐
- 蓝牙inquiry流程之Inquiry Complete处理
inquiry流程一般持续有12s多,当inquiry完成的时候,设备端会上报一个Event: Inquiry Complete 上来,那协议栈是如何把这个事件上传到应用层的呢?本篇文章来分析一下其具 ...
- Egret(白鹭引擎)——Egret+fairyGui 实战项目入门
前言 一行白鹭上青天 需求 最近,我们老板刷刷的为了省事,给美术减压(背景有点长,不说了). 美术出 fairygui,我需要在网页上看到实时操作,并且看到效果! 需求分析 这怕是要了我的狗命啊,但是 ...
- 解决Docker容器时区及时间不同步的问题
前几天在测试应用的功能时,发现存入数据库中的数据create_time或者update_time字段总是错误,其他数据都是正常的,只有关于时间的字段是错误的. 进入linux服务器中查看,也没有任何的 ...
- Linux 僵尸进程
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...
- 关于UNITY学习,给新生建议
没有不可能,只有不努力. 本人自学UNITY,实力不敢称最好,但绝对不是小白,自己独立做出过游戏,AR.(用C#) 1. 导入模型一定要注意坐标,否则会很麻烦.本人因为这个吃了很多盐 2. 学unit ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- A1006. Sign In and Sign Out(25)
25/25,一遍过了,很开心. #include<bits/stdc++.h> using namespace std; struct record{ string id; string ...
- Linux内核分析第二周总结
计算机是如何工作的? 计算机的"三大法宝": 存储程序计算机 函数调用堆栈 中断机制 堆栈是计算机运行高级语言的基础 函数调用堆栈: 32位X86通过函数调用堆栈来传递参数 使用e ...
- 求二维数组联通子数组和的最大值 (联通涂色) beta!
算法十分臃肿,效率捉鸡,不知用了多少循环,还有bug...任重道远,编程之美. 思想:按行遍历,找出每行的最大子数组.若行间都联通,行最大子数组相加后,再加上独立的正数.若行间不连通,找出较大子路径, ...
- SDN 交换机迁移1
A game-theoretic approach to elastic control in software-defined networking 2014 之前的交换机迁移的工作(ElastiC ...