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 ...
随机推荐
- 禅道 Rest API 开发
在老的 PHP 系统中使用 PHP 5.3以后的库 所谓老的系统,是指没有使用PHP 5.3以上命名空间(namespace)特性编码的系统. 但是,只要你的系统运行在 PHP 5.3及以上的环境,在 ...
- Map遍历两种方式
Java代码 Map<String,String> map=new HashMap<String,String>(); map.put("username" ...
- java servlet+oracle 新手可看
最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口 ...
- 【Linux_Fedora_系统管理系列】_1_用户登录和系统初始配置
发现一个问题,在FC14 的Firefox浏览器中,编辑和排版好的博文,在windows下用chrome或者猎豹浏览器打开后,排版就变得阅读 不是很容易里,而且经常不经意的断行.不知道园子的管理人员时 ...
- [PHP] 使用Socket提供Http服务
我的SimpleLoader里面的一块 https://github.com/taoshihan1991/simpleloader <?php namespace Server; class S ...
- 【Asphyre引擎】冒险岛换装Demo升级到最新版PXL
demo代码 (不包含Sprite代码,要Sprite代码请下载之前那个doudou的demo)
- mybatis 3的TypeHandler解析(null值的处理)
最近,在测试迁移公司的交易客户端连接到自主研发的中间件时,调用DAO层时,发现有些参数并没有传递,而在mapper里面是通过parameterMap传递的,因为有些参数为null,这就导致了参数传递到 ...
- java 字符串zlib压缩/解压
今天在测公司的中间件时发现,增加netty自带的zlib codec压缩处理后,就报decompress failed, invalid head之类的异常.后来发现,直接用bytebuf处理报文体是 ...
- 【转】Linux重定向操作符
Linux重定向操作符 功能描述 > 将命令输出写入文件或设备,而不是命令提示符或句柄,清空原有文件然后写入 < 从文件而不是从键盘或句柄读入命令输入 >> 将命令输出添加到文 ...
- 众人口中的JAVASCRIPT
目前所说的JAVASCRIPT=ECMAscript+DOM+BOM DOM全称:Document Object Model,造作网页内容的标准. BOM全称:Browse Object Model, ...