你这样再试一下,应该可以的~~
CREATE PROCEDURE p_StudentAdd
@StudentID varchar(13),
@StudentName varchar(10),
@ClassSN int,
@StudentSex bit,
@ReturnID int output
AS
if exists(select StudentID from Students Where StudentID = @StudentID)
SET @ReturnID = 1
else
BEGIN
Insert Students(StudentID,StudentName,ClassSN,StudentSex)
values(@StudentID,@StudentName,@ClassSN,@StudentSex)
SET @ReturnID = 0
END
CREATE PROCEDURE p_StudentAdd
@StudentID varchar(13),
@StudentName varchar(10),
@ClassSN int,
@StudentSex bit,
@ReturnID int output
AS
if exists(select StudentID from Students Where StudentID = @StudentID)
SET @ReturnID = 1
else
BEGIN
Insert Students(StudentID,StudentName,ClassSN,StudentSex)
values(@StudentID,@StudentName,@ClassSN,@StudentSex)
SET @ReturnID = 0
END
因为存储过程的输入参数,在执行时一定要传值的,
没有必要判断都是非空如果还是不好用的话,请检查表中的数据,或者你把表中数据贴出来,大家分析~不知道你在执行这个存储过程是怎么执行的。
看是否是这样的:declare @ReturnID int
exec yy1 '002','jim',1,0,@ReturnID output
select @ReturnID ReturnID
CREATE PROCEDURE p_StudentAdd
@StudentID varchar(13),
@StudentName varchar(10),
@ClassSN int,
@StudentSex bit
AS
if exists(select StudentID from Students Where StudentID = @StudentID)
Return 1
else
BEGIN
Insert Students(StudentID,StudentName,ClassSN,StudentSex)
values(@StudentID,@StudentName,@ClassSN,@StudentSex)
Return 0
END然后你的asp:
...
set comm=server.createobject("ADODB.command")
set comm.ActiveConnection = cn 'cn为你的connection
comm.commandtype = adCmdStoredProc 'adCmdStoredProc = 4
comm.commandtext = "DBO.p_StudentAdd"
comm.parameters.Refresh
comm.parameters("@StudentID") = request.form("txtStudentID")
comm.parameters("@StudentName") = request.form("txtStudentName")
comm.parameters("@ClassSN") = request.form("txtClassSN")
comm.parameters("@StudentSex") = request.form("txtStudentSex") comm.execute
if comm.parameters(0) = "0" then ---这个就是return值
response.write "已经存在该笔纪录"
else
response.write "成功添加该笔纪录"
end if
response.end---我一直这样做,像这种只要返回一个标志的,我都只用return值!