日期:2014-05-19  浏览次数:20416 次

实在搞不定,请兄弟们帮我看看这段存储过程
CREATE   PROCEDURE   dbo.AddNewMsg
(
@AuthorID   int,
@ThreadID   int,
@MsgContent   ntext,
@Audited   bit,
@IpAddress   nvarchar(24)
)

AS
declare   @MsgLevel   smallint
SELECT   @MsgLevel=MAX(MsgLevel)   FROM   MsgData   WHERE   ThreadID=@ThreadID
IF   (@MsgLevel   IS   NULL)
BEGIN
SET   @MsgLevel=0
END
SET   @MsgLevel   =(1+@MsgLevel)
INSERT   INTO   MsgData(AuthorID,ThreadID,MsgContent,MsgLevel,Audited)VALUES   (@AuthorID,@ThreadID,@MsgContent,@MsgLevel,@Audited)
    IF   @@ROWCOUNT <> 1
BEGIN
    PRINT   'AddNewMsg2   Failed '
    RETURN   0
END
UPDATE   ThreadData   SET   LastReply=GETDATE(),replycount=(1+replycount)   WHERE   ThreadID=@ThreadID
INSERT   INTO   IPData   (ThreadID,   MsgLevel,IpAddress)VALUES(@ThreadID,   @MsgLevel,@IpAddress)
RETURN   @MsgLevel

我自己的机器装的是VS2005+SQL2005,运行正常.
服务器上装的是SQL2000,没法运行,又不知道错在什么地方.请大家指点一下.

------解决方案--------------------
看不出来问题,是数据库表的问题吗?
------解决方案--------------------
存储过程看不出什么问题;
------解决方案--------------------
UP下,先吃饭回来看呵呵
------解决方案--------------------
把你那个存储过程在服务器上调下看看;如果你可以在服务器上进行操作的话~~
------解决方案--------------------
可以在VS里执行一下看看
------解决方案--------------------
CREATE PROCEDURE dbo.AddNewMsg
把上面的dbo去掉

可能MsgData这个表不是用户dbo创建的

MsgLevel赋值是不是可以这样写:

--
select @MsgLevel = isNull(max(MsgLevel),0)+1 FROM MsgData WHERE ThreadID=@ThreadID