Asp.net 如果存在于存储过程中
我正在使用以下StoredProcessAsp.net 如果存在于存储过程中,asp.net,vb.net,sql-server-2005,Asp.net,Vb.net,Sql Server 2005,我正在使用以下StoredProcess set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO Alter PROCEDURE [dbo].[GetUserDetailsByUserID] ( @UserId varchar(100) ) AS BEGIN IF EXISTS(Select * from Registration where UserId=@UserID) BEGIN Select
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
Alter PROCEDURE [dbo].[GetUserDetailsByUserID]
(
@UserId varchar(100)
)
AS
BEGIN
IF EXISTS(Select * from Registration where UserId=@UserID)
BEGIN
Select
[Name],
[UserId],
[PermanentAddress],
[TemporaryAddress],
[OfficePhoneNo],
[ResidentialPhoneNo],
[MobileNo],
[Email],
[ContactPerson],
[C_OfficePhoneNo],
[C_ResidentialPhoneNo],
[C_MobileNo],
[C_Email],
[Project],
[TotalAmount]
From
Registration
Where
UserId=@UserId
END
END
我在vb中使用以下代码
Public Function GetUserDetailsByUserID(ByVal strUserId As String) As DataTable
Try
Dim db As Database = DatabaseFactory.CreateDatabase()
Dim DbCommand As DbCommand = _
db.GetStoredProcCommand("GetUserDetailsByUserID")
db.AddInParameter(DbCommand, "@UserId", DbType.String, strUserId)
Return db.ExecuteDataSet(DbCommand).Tables(0)
Catch ex As Exception
Return New DataTable()
End Try
End Function
如果注册表中不存在与userid对应的详细信息,
db.ExecuteDataSet(DbCommand).Tables(0)
显示一个错误,因为找不到表(0)
。我需要对stoted过程进行哪些修改以消除此错误?该过程不会始终返回记录集。如果没有记录集,表
将为空,表(0)
将失败并返回错误。您应该只返回选择,而不是仅选择记录是否存在。然后,您的代码可以检查返回的记录集是否为空。该过程并不总是返回记录集。如果没有记录集,表
将为空,表(0)
将失败并返回错误。您应该只返回选择,而不是仅选择记录是否存在。然后,您的代码可以检查返回的记录集是否为空。如果存在,您只需删除。当记录不存在时,您将得到一个空表(我认为这是您想要的,请查看示例代码)如果存在,您可以简单地去掉。当记录不存在时,您将得到一个空表(我认为这是您想要的,查看示例代码)在VB代码中,更改
Return db.ExecuteDataSet(DbCommand).Tables(0)
到
另外,从存储过程中删除If Exists,因为如果该行存在,您将强制数据库在表中搜索两次UserId=@UserId的记录。在VB代码中,更改
Return db.ExecuteDataSet(DbCommand).Tables(0)
到
另外,从存储过程中删除If Exists,因为如果该行存在,则将强制数据库在表中搜索两次UserId=@UserId的记录