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 参数。

看来只能曲线救国了。

=========================第一次写这种东西,又要丢人了==============================

创建一个用户定义表类型

 1 CREATE TYPE TBLDATA AS TABLE
 2 (
 3 [Cmd] [nvarchar](50),
 4 [Num] [nvarchar](50),
 5 [Name] [nvarchar](50) ,
 6 [InnerID] [nvarchar](50),
 7 [Result] [nvarchar](50),
 8 [EndTime] [datetime],
 9 [Legal] [tinyint]
10 )
11
12 GO

创建一个存储过程

 1 CREATE PROC usp_GetData
 2 AS
 3     BEGIN
 4         DECLARE    @tblSD TBLDATA
 5
 6         BEGIN TRANSACTION
 7             INSERT  INTO @tblSD
 8                     ( Cmd ,
 9                       Num ,
10                       Name ,
11                       InnerID ,
12                       Result ,
13                       EndTime ,
14                       Legal
15                     )
16                     SELECT  Cmd ,
17                             Num ,
18                             Name ,
19                             InnerID ,
20                             Result ,
21                             EndTime ,
22                             Legal
23                     FROM    Data
24
25             DELETE    FROM Data
26         COMMIT TRANSACTION
27
28         SELECT    *
29         FROM    @tblSD
30     END

不要忘了授权

1 GRANT EXECUTE ON usp_GetData TO testdev

=======================================================================

试了下,功能是实现了,感觉效率会坑,好在数据很少。

没办法,以后再说吧。

(已消毒,所以命名规范什么的,处女座请自重。)

时间: 2024-11-25 15:49:47

SQL Server 2008 R2——T-SQL 存储过程 返回表的相关文章

安装 SQL Server 2008 R2 的硬件和软件要求(转)

以下各部分列出了安装和运行 SQL Server 2008 R2 的最低硬件和软件要求.有关 SharePoint 集成模式下的 Analysis Services 的要求的详细信息,请参阅硬件和软件要求 (PowerPivot for SharePoint). 对于 SQL Server 2008 R2 的 32 位和 64 位版本,适用以下要求: SQL Server 2008 R2 Datacenter 有评估版可供使用,试用期为 180 天.有关详细信息,请参阅 SQL Server:

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/archive/2014/10/01/sql-server-2008-r2-sp3-and-sql-server-2008-sp4-are-now-available.aspx 主题 SQL Server SQL Microsoft is pleased to announce the release of

SQL Server 2008 R2高可用解决方案--镜像(证书)

SQL Server高可用方案--镜像搭建(证书) 环境: 角色 IP 操作系统 数据库版本 数据库 主 192.168.10.8 Windows Server  2008 R2 SQL Server 2008 R2 fdb 备 192.168.10.9 Windows Server  2008 R2 SQL Server 2008 R2 fdb 一.环境检查 1.网络是否互通 2.防火墙端口是否开放(需要开放1433.5022端口) 3.数据库软件版本是否有差异(软件版本为SQL Server

sql server 2008 r2各个版本的区别与选择

转自:https://blog.csdn.net/kasama1953/article/details/52522921 目前已知的SQL Server 2008 R2的版本有: 企业版.标准版.工作组版.Web版.开发者版.Express版.Compact 3.5版. 这个次序也是各个版本功能的强大程度从高到低的一个排序.具体使用哪个版本,并非是约强大越好,而是应该使用适合的版本.很多初级开发者,比如笔者我,对这些版本的具体含义往往并不是十分清楚,所以我今天就从几篇博文中,将自己所看到的精华部

SQL Server 2008 R2执行存储过程sp_MailItemResultSets引起大量PREEMPTIVE_OS_WAITFORSINGLEOBJEC等待

  从监控工具DPA中发现一个数据库(SQL Server 2008 R2)的等待事件突然彪增,下钻分析发现数据库执行存储过程sp_MailItemResultSets时,引起了非常严重的等待(High Wait),而主要的等待事件为PREEMPTIVE_OS_WAITFORSINGLEOBJEC. 如下截图所示: 查询正在执行的SQL,发现会话正在执行下面SQL(存储过程sp_MailItemResultSets中的一个SQL语句),等待事件为ASYNC_NETWORK_IO.   USE m

SQL SERVER 2008 R2 自动备份并删除过期备份数据

    我们的系统维护的过程中肯定需要对数据库进行定期的备份,但是如果定时手工备份的话,不但浪费时间,也不能保证每次都可以按时备份,所以自动备份成为了我们的不二选择,但是定时备份需要定期清理备份文件,不然会因为磁盘空间不足导致备份失败,失去备份的准确性,下面我们就一步步来看一下如果自动备份并删除过期备份数据. 1.打开SQL SERVER 2008 R2,连上数据库,右键选择[管理]-[维护计划]-[维护计划向导]. 2. 在名称中为维护计划取一个通俗易懂的名字,例如"EveryDayBak&q

SQL Server 2008 R2 性能计数器详细列表(一)

原文:SQL Server 2008 R2 性能计数器详细列表(一) SQL Server Backup Device 计数器: 可监视用于备份和还原操作的 Microsoft SQL Server 备份设备 SQL Server Backup Device 计数器 说明 Device Throughput Bytes/sec 一个备份设备在备份或还原数据库时所用的读写操作的吞吐量(以每秒字节数表示).这一计数器只有在备份或还原操作执行时才存在. SQL Server Access Method

配置SQL Server 2008 R2 Reporting Services

原文:配置SQL Server 2008 R2 Reporting Services 记录如何在本地配置SQL Server 2008 R2 Reporting Services,笔者环境为Windows 7 64位 + SQL Server 2008 R2 一.准备工作 其实准备工作很简单,只需通过Microsoft SQL Server 2008 R2 -> Configuration Tools -> SQL Server Configuration Manager 打开几个Window

sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同

原文:sql点滴38—SQL Server 2008和SQL Server 2008 R2导出数据的选项略有不同 说明: 以前要将一个表中的数据导出为脚本,只有用存储过程.现在在SQL Server 2008中增加了一个新特性,除了导出表的定义外,还支持将表中的数据导出为脚本. 步骤: 右击需要导出数据的数据库,在弹出式菜单中选择“任务”下的“生成脚本”选项 在第二步选择“高级选项”如果不是2008(R2)的选择 "编写数据的脚本"选择为TRUE,这里默认是为FALSE的 , 是200

Microsoft SQL Server 2008 R2 安装遇到的问题

SQL Server 安装过很多次了,第一次遇见这样的问题: TITLE: Microsoft SQL Server 2008 R2 安装程序------------------------------ 出现以下错误: An error occurred during the installation of assembly 'Microsoft.VC80.CRT,version="8.0.50727.42",type="win32",processorArchit