码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 2008 R2——T-SQL 存储过程 返回表

时间:2015-03-28 17:12:36      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

 

 

                                      未完成,感觉有点问题。                                

 

 

 

 

 

 

==================================声明==================================

本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。

未经作者同意请勿修改(包括本声明),保留法律追究的权利。

未经作者同意请勿用于出版、印刷或学术引用。

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。

本文链接: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

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

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

没办法,以后再说吧。

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

SQL Server 2008 R2——T-SQL 存储过程 返回表

标签:

原文地址:http://www.cnblogs.com/wlsandwho/p/4374367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!