我的数据库用的是SQL,我写了个存储过程,每当新增一条记录时,都用OUTPUT参数返回这条记录的主键,主键是自增的。但在页面代码中调用这个存储过程的时候,返回来的结果总是为空,郁闷!
1、表结构
CREATE TABLE [dbo].[Account_Role] (
[RoleId] [int] IDENTITY (1, 1) NOT NULL ,
[CategoryID] [int] NOT NULL ,
[RoleName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Description] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Account_Role] WITH NOCHECK ADD
CONSTRAINT [PK_Account_Role] PRIMARY KEY CLUSTERED
(
[RoleId]
) ON [PRIMARY]
GO
2、存储过程
CREATE PROCEDURE sp_AccountRole_Create
@CategoryID int,
@RoleName nvarchar(10),
@Description nvarchar(50),
@RoleID int output
AS
DECLARE @Count int -- 查找是否有相同名称的记录
SELECT @Count = Count(RoleID) FROM Account_Role WHERE
RoleName = @RoleName
INSERT INTO Account_Role(CategoryID, RoleName, Description) valueS
(@CategoryID, @RoleName, @Description)
SET @RoleID = @@IDENTITY
RETURN 0
GO
3、执行的代码
Dim param() As OleDbParameter = {New OleDbParameter("@CategoryID", OleDbType.Integer, 1), _
New OleDbParameter("@RoleName", OleDbType.VarChar, 50), _
New OleDbParameter("@Description", OleDbType.VarChar, 50), _
New OleDbParameter("@RoleID", OleDbType.Integer, 10) _
}
param(0).Value = "1"
param(1).Value = "2"
param(2).Value = "sss"
param(3).Direction = ParameterDirection.Output
Dim ds As DataSet
ds = _cus.cusProcData("sp_AccountRole_Create", param, "sp_AccountRole_Create")
Dim s As String
s = CStr(param(3).Value) 在这里,s就是你要返回的output的值