首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

|M| 第三贴:小弟我的一个存储过程,怎么返回值啊要如何写 小弟我写的出错 多谢 超急

2012-01-28 
|M| 第三贴:我的一个存储过程,如何返回值啊要怎么写 我写的出错 谢谢超急啊存储过程CREATEPROCEDURE[inser

|M| 第三贴:我的一个存储过程,如何返回值啊要怎么写 我写的出错 谢谢 超急啊
存储过程
CREATE   PROCEDURE   [insert_ConcertSite_1]
(
      @SiteID   int   output,
  @CityID_1   [int],
  @SupplierID_2   [int],
  @Address_3   [nvarchar](500),
  @SiteName_4   [nvarchar](50),
  @MapRoad_5   [nvarchar](500),
  @SitePic_6   [nvarchar](500),
  @Intro_7   [nvarchar](4000),
  @Remark_8   [text])

AS   INSERT   INTO   [HotelBook].[dbo].[ConcertSite]  
  (   [CityID],
  [SupplierID],
  [Address],
  [SiteName],
  [MapRoad],
  [SitePic],
  [Intro],
  [Remark])  
 
VALUES  
(   @CityID_1,
  @SupplierID_2,
  @Address_3,
  @SiteName_4,
  @MapRoad_5,
  @SitePic_6,
  @Intro_7,
  @Remark_8)
SET   @SiteID   =   (SELECT   scope_identity()   )
GO
ASP.NET:
SqlConnection   con   =   ConcertDB.createcon();
SqlCommand   com   =   new   SqlCommand( "insert_ConcertSite_1 ",   con);
com.CommandType   =   CommandType.StoredProcedure;
SqlParameter   spt   =   new   SqlParameter();
spt   =   new   SqlParameter( "@SiteID ",   SqlDbType.Int,   4);
spt.Direction   =   ParameterDirection.Output;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@CityID ",   SqlDbType.Int,   4);
spt.Value   =   ddl_CityName.SelectedValue;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@SupplierID ",   SqlDbType.Int,   4);
spt.Value   =   txt_SupplierID.Value;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@Address ",   SqlDbType.NVarChar,   500);
spt.Value   =   txt_Address.Text;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@SiteName ",   SqlDbType.NVarChar,   50);
spt.Value   =   txt_SiteName.Text;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@MapRoad ",   SqlDbType.NVarChar,   500);
spt.Value   =   fud_MapRoad.FileName;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@SitePic ",   SqlDbType.NVarChar,   500);
spt.Value   =   fud_SitePic.FileName;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@Intro ",   SqlDbType.NVarChar,   4000);
spt.Value   =   txt_Intro.Text;
com.Parameters.Add(spt);
spt   =   new   SqlParameter( "@Remark ",   SqlDbType.Text,   16);
spt.Value   =   txt_Remark.Text;
com.Connection.Open();
int   i   =   Convert.ToInt32(com.ExecuteNonQuery());
int   outID   =   (int)com.Parameters[ "@SiteID "].Value;
com.Connection.Close();

以上出错:
这条int   i   =   Convert.ToInt32(com.ExecuteNonQuery());
提示:将参数值从   String   转换到   Int32   失败。

我想应该是这里出错:
spt   =   new   SqlParameter( "@SiteID ",   SqlDbType.Int,   4);
spt.Direction   =   ParameterDirection.Output;
com.Parameters.Add(spt);

要怎么改啊..谢谢

很急啊


------解决方案--------------------


返回值要这么写:
SqlParameter para = new SqlParameter( "@ReturnValue ",SqlDbType.Int);
para.Direction = ParameterDirection.ReturnValue;

执行完后,断开connection再取值
[解决办法]
自定义函数scope_identity() 返回的值是int型的或是数字吗?
[解决办法]
int i = Convert.ToInt32(com.ExecuteNonQuery());
改为
int i = com.ExecuteNonQuery();
[解决办法]
帮顶
[解决办法]
请问楼主 自定义函数scope_identity() 返回的值是int型的或是数字吗?
[解决办法]
如果 自定义函数scope_identity() 返回的值 是非数字的
int i = Convert.ToInt32(com.ExecuteNonQuery());
此处会抱错的
楼主可以调试下

[解决办法]
抱歉 SCOPE_IDENTITY( ) 是系统函数
sorry
[解决办法]
int i = Convert.ToInt32(com.ExecuteNonQuery());
这里没有语法错误 只是多此一举
因为ExecuteNonQuery()本身返回的就是int
int i = com.ExecuteNonQuery();


spt = new SqlParameter( "@CityID ", SqlDbType.Int, 4);
spt.Value = ddl_CityName.SelectedValue;
com.Parameters.Add(spt);
spt = new SqlParameter( "@SupplierID ", SqlDbType.Int, 4);
spt.Value = txt_SupplierID.Value;
com.Parameters.Add(spt);

应该是这里
你看你传进去的 ddl_CityName.SelectedValue 和 txt_SupplierID.Value
是否不是int类型的值

[解决办法]
存储过程错误

CREATE PROCEDURE [insert_ConcertSite_1]
(
@SiteID int output,
@CityID [int],
@SupplierID [int],
@Address [nvarchar](500),
@SiteName [nvarchar](50),
@MapRoad [nvarchar](500),
@SitePic [nvarchar](500),
@Intro [nvarchar](4000),
@Remark [text])

AS INSERT INTO [ConcertSite]
( [CityID],
[SupplierID],
[Address],
[SiteName],
[MapRoad],
[SitePic],
[Intro],
[Remark])

VALUES
( @CityID,
@SupplierID,
@Address,
@SiteName,
@MapRoad,
@SitePic,
@Intro,
@Remark)
SET @SiteID = (SELECT scope_identity() )
GO

另外少了

spt = new SqlParameter( "@Remark ", SqlDbType.Text, 16);
spt.Value = txt_Remark.Text;
com.Parameters.Add(spt);

热点排行