动态组合sql语句详解
举个简单例子,我们需要一个存储过程对数据根据条件进行汇总,表结构如下:
CREATE TABLE tmp_Table( ID INT, --ID编号 t_Total INT, --总量 t_Name VARCHAR(100), --名称 t_Type INT --类型 )
1、要求通过存储过程OUTPUT返回“总量、类型、名称”
2、当指定t_Type的值为-1时,我们查询第一条记录;反之则查询指定t_Type的第一条记录
根据条件我们写出存储过程基本结构如下:
CREATE PROCEDURE p_TestExecuteSql @t_Type INT, --指定t_type的值 @ReturnTotal INT, --返回总量 @ReturnName VARCHAR(100) OUTPUT, --返回名称 @ReturnType INT OUTPUT --返回类型 BEGIN --执行相应的sql语句 DECLARE @sql NVARCHAR(1000) --注意这里一定要是NVARCHAR的类型 SET @sql = N'SELECT TOP 1 @Total = t_Total, @Name = t_Name, @Type = t_Type FROM tmp_Table' IF t_Type <> -1 SET @sql = @sql + N' WHERE p_Type = ' + CONVERT(NVARCHAR, @t_Type) EXEC sp_executesql @sql, N'@Total INT OUTPUT, @Name VARCHAR(100) OUTPUT, @Type INT OUTPUT', @ReturnTotal OUTPUT, @ReturnName OUTPUT, @ReturnType output END
1.
DECLARE @sql NVARCHAR(1000)
2.
EXEC sp_executesql @sql, '@Total INT OUTPUT, @Name VARCHAR(100) OUTPUT, @Type INT OUTPUT', @ReturnTotal OUTPUT, @ReturnName OUTPUT, @ReturnType output
DECLARE @ReturnTotal INT,@ReturnName VARCHAR(100), @ReturnType INT exec p_TestExecuteSql 0, @ReturnTotal OUTPUT, @ReturnName OUTPUT, @ReturnType OUTPUT
SELECT @Total = t_Total, @Name = t_Name, @Type = t_Type FROM tmp_Table WHERE p_Type = 0
CREATE PROCUDRE p_TmpProc @Total INT OUTPUT, @Name VARCHAR(100) OUTPUT, @Type INT OUTPUT BEGIN SELECT @Total = t_Total, @Name = t_Name, @Type = t_Type FROM tmp_Table WHERE p_Type = 0 END
注意:本文为我的独立博客镜像博客,自发表不再更新,原文可能随时被更新,敬请访问原文。同时,请大家不要在此评论,如果有什么看法,请点击这里:http://iove.net/1705/
本文来自http://iove.net,欢迎转载,转载敬请保留相关链接,否则视为侵权,原文链接:http://iove.net/1705/
转载于:https://www.cnblogs.com/conis/archive/2007/07/16/1720602.html
动态组合sql语句详解相关推荐
- MyBatis SQL语句详解
MyBatis SQL语句详解 1 CRUD标签 1.1 select 1.2 insert 1.3 update 1.4 delete 1.5 #{ }和${ }的区别 2 动态SQL 2.1 if ...
- SQL语句详解(四)——SQL联表查询
今天我们继续给大家介绍MySQL相关知识,本文主要内容是SQL联表查询. 一.SQL联表查询简介 在前文SQL语句详解(三)--SQL子查询中,我们给大家介绍了SQL子查询的相关知识和使用示例.实际上 ...
- mysql切换用户sql语句,MySQL用户管理及SQL语句详解
[(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...
- oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解
oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...
- SQL基础:常用SQL语句详解(转)
到今天为止,人们对关系数据库做了大量的研究,并开发出关系数据语言,为操作关系数据库提供了方便的用户接口.关系数据语言目前有几十种,具有增加.删除.修改.查询.数据定义与控制等完整的数据库操作功能.通常 ...
- 【数据库】MySQL的sql语句详解
目录 MySQL之sql语句 一, INSERT语句 insert语句的使用: 1,给表中一次性插入一条记录 2,给表中一次性插入多条记录 二, REPLACE语句 REPLACE语句的使用 1,语法 ...
- 按日统计注册人数SQL语句详解(自动补齐空缺数据)
按日统计XX人数其实是一个很常用的功能.比如说按日统计注册人数.按日统计订单数等.原理其实很相似,一通百通. 话不多说,进入正题. 一.最终sql语句展示 我们先来看下最终的sql语句及得到的结果: ...
- mysql批量删除数据sql语句_mysql批量删除数据sql语句详解
1.like与 in批量删除指定记录 like语法 like主要是用来模糊查询了 sql = "delete from A where field like '%ABC%'" 这个 ...
- mysql左连接sql语句详解_SQL各种连接查询详解(左连接、右连接..)
一.交叉连接(cross join) 交叉连接(cross join):有两种,显式的和隐式的,不带on子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. 语句1:隐 ...
- Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解
文章目录 内连接 inner join 示例 外连接 outer join left outer join 左外连接 示例 right outer join 右外连接 示例 full outer jo ...
最新文章
- 【译】微软出品HashiCorp Terraform 和 Vault 系列视频
- 谁是2020年最强Python库?年度Top10出炉
- python可以做什么系统-用python做推荐系统(一)
- 如何不用 List.clear() 方法 就清空 list 中的 所有元素(中兴面试)
- mac mysql prefpane_【MySQL数据库开发之一】Mac下配置安装数据库-MySQL
- Spring中配置Hibernate事务的四种方式
- 计算机房安全等级标准,电子计算机房的分级标准
- 2019年今日头条机试_JAVA后台岗_第一题
- Intellij IDEA设置显示行号
- c++编写算法判断二叉树是否为完全二叉树_字节面试官:连这90道LeetCode算法题都不会也来面试?...
- go语言和java比_python与java、php、go的优势对比,各语言不要引起恐慌哈
- html%3cform%3e不换行,HTML URL 编码
- 14.链表中倒数第k个结点
- mitmproxy安装证书_在 macOS 上使用 mitmproxy 透明代理进行网络抓包
- 音视频学习之基础概念整理(rgb/yuv,pcm,采样频率,帧率,码率,i帧p帧b帧,dts/pts)
- Error:(list) object cannot be coerced to type 'double'的处理
- 用blender环绕物体拍摄
- stl文件用proe怎么打开_3dMax怎么导入proe的文件渲染?3dmax导入stl文件过程
- 12、Storage(存储)(基础知识)
- 实战 | flink sql 实时 TopN