CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

insert TableName values('22','liu') select @@Identity 这条语句为什么不返回!@

楼主yxandyx(若有所思)2004-11-02 09:48:06 在 MS-SQL Server / 基础类 提问

在插入一条数据之后,立即返回此条数据的ID,注意不是存储过程,而是SQL语句!!!!但是没有返回. 问题点数:0、回复次数:11Top

1 楼mgsray(我是新新新新,新来的吧)回复于 2004-11-02 10:00:05 得分 0

楼主插入的表里面没有identity列吧,所以当然没有返回值.  
  有idnetity列的话insert应该是这样的,insert   TableName(No,name)   values('22','liu')  
  表结构应该是create   table   (id   int   identity(1,1),No   varchar(10),name   varchar(10))Top

2 楼yxandyx(若有所思)回复于 2004-11-02 10:55:28 得分 0

当然有Identity列了,我在"查询分析器"中执行就会返回ID.  
  在程序中就不行了,我想问题出在两个SQL语句,一个是Insert   语句,一个是Select   @@Identity,这样就不会返回结果,不知道是不是这样/Top

3 楼irq001()回复于 2004-11-02 11:01:20 得分 0

是不是在程序中分成两个语句写的?Top

4 楼irq001()回复于 2004-11-02 11:05:44 得分 0

应该写成一个语句块而且立即执行select   @@identity才行的吧Top

5 楼mgsray(我是新新新新,新来的吧)回复于 2004-11-02 11:23:59 得分 0

原来是写在程序里面的,那应该是两个会话的问题,在查询分析器里面你可以试试开两个窗口,在一个里面insert了以后select   @@identity是有值的,在另一个窗口里面直接select   @@identity是null  
  所以你要获得的话应该要写在一个sql语句块里面,同楼上Top

6 楼ghchen()回复于 2004-11-02 16:39:42 得分 0

应该要写在一个sql语句块里面Top

7 楼yxandyx(若有所思)回复于 2004-11-03 10:09:59 得分 0

语句块是什么?Top

8 楼irq001()回复于 2004-11-03 10:28:12 得分 0

如果不存在并发情况,你可以试试返回IDENT_CURRENT('表名'),如果有并发的情况发生,你就将两个语句写在一个语句块里,  
  insert   into   ...  
  select   @@identity  
  go  
  称为一个语句块。Top

9 楼sdhdy(大江东去...)回复于 2004-11-03 10:58:48 得分 0

set   nocount   on  
  insert   TableName   values('22','liu')    
  select   @@IdentityTop

10 楼shuicaitian(水采田)回复于 2004-12-09 15:18:13 得分 0

在没有任何数据时进行无效的读取尝试。    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.InvalidOperationException:   在没有任何数据时进行无效的读取尝试。  
  ====================  
  我是用的存储过程,  
  insert   into   ...  
  select   @@identity   as   id  
  go  
  怎么也出现上述错误提示??????  
  C#代码  
  System.Data.SqlClient.SqlDataReader   myReader=cm.ExecuteReader();//  
  Label6.Text=myReader["id"].ToString();//×就是这行提示出错!  
  Top

11 楼Korny(登峰)回复于 2005-01-14 13:31:49 得分 0

存储过程的值,你在C#中这样是不能返回的Top

相关问题

  • 请教一sql语句,SELECT @@IDENTITY AS 'id'
  • 入门问题: SQL语句中:[dbo].tablename与 dbo.tablename 有何区别?
  • 简单语句:类似 select top 10 * from tablename where tag=3
  • 怎么执行一个“drop table tablename”的语句
  • 难题:!!SQL语句中:select * from tablename 其中tablename能否用变量实现?
  • 有没有SQL语句可以控制列的IDENTITY属性的?
  • 求:主键加上和去掉identity属性的语句
  • 用SQL语句怎么把已存在的列加上IDENTITY(1,1)属性
  • 如何通过SQL语句给表中字段新增Identity属性?
  • 怎样使用SQL语句去掉自增长字段的IDENTITY属性?

关键词

  • 语句
  • 数据
  • 执行
  • sql
  • identity
  • liu
  • 返回
  • tablename
  • insert
  • 错误

得分解答快速导航

  • 帖主:yxandyx

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo