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 过程,否则 textntextimage 参数不能用作 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

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

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

没办法,以后再说吧。

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。