SQL Server 2008 R2——T-SQL 存储过程 返回表
==================================声明==================================
本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。
未经作者同意请勿修改(包括本声明),保留法律追究的权利。
未经作者同意请勿用于出版、印刷或学术引用。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。
本文链接:http://www.cnblogs.com/wlsandwho/p/4374367.html
=======================================================================
虽然早在上学时就学过Sql Server 2005,但是工作中一直没有亲手用过。
最近的工程抛弃了Access,用上了Sql Server 2008。
于是需要写存储过程了。
(不知道为什么他们那么喜欢Access,是部署方便,工业大多只存数据的原因?)
=======================================================================
看了几天(虚词)的资料,只能写出这种程度,还是希望能有大神指点下。
=======================================================================
在数据库中建立了一张表,用于存放上次未处理的数据。当软件启动的时候,读取数据到界面,然后清空表。
之前我在VC++中用ADO分成2步做:在事务中,读取表数据,删除表数据。
没有问题。但感觉好麻烦。
想看看能不能用存储过程直接实现,于是看了下手册:
OUT | OUTPUT
指示参数是输出参数。使用 OUTPUT 参数将值返回给过程的调用方。除非是 CLR 过程,否则 text、ntext 和 image 参数不能用作 OUTPUT 参数。OUTPUT 参数可以为游标占位符,CLR 过程除外。
不能将表值数据类型指定为过程的 OUTPUT 参数。
看来只能曲线救国了。
=========================第一次写这种东西,又要丢人了==============================
创建一个用户定义表类型
CREATE TYPE TBLDATA AS TABLE
(
[Cmd] [nvarchar](50),
[Num] [nvarchar](50),
[Name] [nvarchar](50) ,
[InnerID] [nvarchar](50),
[Result] [nvarchar](50),
[EndTime] [datetime],
[Legal] [tinyint]
) GO
创建一个存储过程
CREATE PROC usp_GetData
AS
BEGIN
SET NOCOUNT ON DECLARE @tblSD TBLDATA BEGIN TRANSACTION
INSERT INTO @tblSD
( Cmd ,
Num ,
Name ,
InnerID ,
Result ,
EndTime ,
Legal
)
SELECT Cmd ,
Num ,
Name ,
InnerID ,
Result ,
EndTime ,
Legal
FROM Data DELETE FROM Data
COMMIT TRANSACTION SET NOCOUNT OFF SELECT Cmd ,
Num ,
Name ,
InnerID ,
Result ,
EndTime ,
Legal
FROM @tblSD
END
不要忘了授权
(我的testdev只有读、写权限)
GRANT EXECUTE ON usp_GetData TO testdev
=======================================================================
试了下,功能是实现了,感觉效率会坑,好在数据很少。
没办法,以后再说吧。
(已消毒,所以命名规范什么的,处女座请!自!重!)
=======================================================================
想来,我的这个存储过程会返回好多结果,所以有必要先屏蔽行影响。
在命令行里试验过,还要在代码里能用才行。
SQL Server 2008 R2——T-SQL 存储过程 返回表的更多相关文章
- SQL Server 2008 r2 中 SQL语句提示“对象名无效”,但可执行
[问题描述]在使用 SQL Server 2008 r2 时,有时在完成SQL书写后,会提示“对象名无效”,而SQL语句可正常执行. [原因]缓存相关. [解决方法]ctrl+shift+R 刷新下, ...
- SQL Server 2008 r2 输入SQL语句不能自动提示的解决办法
先利用“配置工具-SQL Server 配置管理器”关闭所有MSSQLSERVER服务,利用SQL Server Installation Center,进入Maintenance,选择Repair, ...
- 【转载】SQL Server 2008 r2 中 SQL语句中单引号转义
sql server有两个转义符. 默认情况下, 单引号'是字符串的边界符, 如果在字符串中包含单引号', 则必须使用两个单引号', 第1个单引号'就是转义符.
- SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- 更改计算机名称后 导致 sql server 2008 R2 用windows账户不能附加的错误解决办法
出错背景:本人想用sql server 2008 R2 附加sql server 2005数据库出现拒绝访问,后查询网站得知,要用windows身份验证方式登录进去附加, 然后我就用windows身份 ...
- SQL Server 2008 R2 的版本和组件
SQL Server 2008 R2 的版本和组件 SQL Server 2008 R2 其他版本 SQL Server 2008 SQL Server 2005 SQL Server 2012 ...
- 安装 SQL Server 2008 R2 的硬件和软件要求(转)
以下各部分列出了安装和运行 SQL Server 2008 R2 的最低硬件和软件要求.有关 SharePoint 集成模式下的 Analysis Services 的要求的详细信息,请参阅硬件和软件 ...
- .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
一. 问题说明 最近.Net EF core 程序部署到服务器,服务器数据库安装的是SQL server 2008 R2,我本地用的的是SQL server 2014,在用到分页查询时报错如下: H ...
- SQL Server 2008 R2 SP3 and SQL Server 2008 SP4 are now available!
时间 2014-10-02 00:00:00 SQL Server Team Blog 原文 http://blogs.technet.com/b/dataplatforminsider/arc ...
- 完全卸载SQL Server 2008 R2(转)
系统:Windows 10 以下方法转自:http://www.cnblogs.com/qanholas/p/3804123.html 1.在控制面板卸载Miscrosoft SQL Server 2 ...
随机推荐
- 良好Web系统架构的几个因素
好像以前整理过一些思路. 这里的架构不是指纵向的架构,而是横向的架构方面. 三个词:挂件化.模块化.钩子化.
- spring 使用redis集群配置
上面两篇介绍了redis集群的配置合一些基本的概念,所以接下来当然是要在项目中使用咯,redis的java支持已经做的非常好了,所以我们来试着使用这些api来进行redis的操作,首先我们需要操作re ...
- Xcode push带有cocoapods类库的项目到git仓库
关于git之一点不熟悉,以前公司的项目搭建,版本控制这块,都是有专门的人在做,当然那时候也是用的git项目中也包含了cocoapods类库,当前公司比较闲, 所以研究了下git,用的是git.osch ...
- 信鸽推送.NET SDK 开源
github 地址 https://github.com/yeanzhi/XinGePushSDK.NET 传送门如何安装 建议使用nuget安装包,搜索"信鸽"即可 ...
- linux 如何改变文件属性与权限
我们知道档案权限对于一个系统的安全重要性,也知道档案的权限对于使用者与群组的相关性, 那如何修改一个档案的属性与权限呢? 我们这里介绍几个常用于群组.拥有者.各种身份的权限的指令.如下所示: chgr ...
- 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
http://www.jb51.net/article/27616.htm 有次同事提出开发使用的mysql数据库连接很慢,因为我们的mysql开发数据库是单独一台机器部署的,所以认为可能是网络连 ...
- Linux下安装DB2_v9.7详细教程
一:平台 1:HP服务器 cpu:Inter (R) Xeon (R) E5606 2.13G 磁盘:本地磁盘外加存储 2:操作系统 RedHet 5.4 64位 内核:2.6.18-194.1.AX ...
- Java自定义一个字典类(Dictionary)
标准Java库只包含Dictionary的一个变种,名为:Hashtable.(散列表) Java的散列表具有与AssocArray相同的接口(因为两者都是从Dictionary继承来的).但有一个方 ...
- 6to5 – 让你即刻体验 ECMAScript 6 编程
ECMAScript 6 是下一代的 ECMAScript 标准.ECMAScript 6 的目标是让 JavaScript 可以用来编写复杂的应用程序.函数库和代码的自动生成器. ES6 是这门语言 ...
- HTML5 Canvas 高仿逼真 3D 布料图案效果
HTML5 规范引进了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法,非常强大.下面给大家分享一个 HTML5 C ...