set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
go 
ALTER PROCEDURE [dbo].[P_addmessges] 
@username varchar(100), 
@title varchar(300), 
@contents varchar(2000), 
@date varchar(20), 
@error int output 
AS 
if @username is null 
begin 
declare @@username varchar(100) 
select @@username=@username 
end 
insert into messages(username,title,contents,date) values(@@username,@title,@contents,@date) 
这样?

解决方案 »

  1.   

    set ANSI_NULLS ON 
    set QUOTED_IDENTIFIER ON 
    go 
    ALTER PROCEDURE [dbo].[P_addmessges] 
    @username varchar(100)=null, 
    @title varchar(300), 
    @contents varchar(2000), 
    @date varchar(20), 
    @error int output 
    AS 
    begin
      if @username is null 
         begin 
           declare @@username varchar(100) 
           select @@username=@username 
         end
      else 
         insert into messages(username,title,contents,date) values(@@username,@title,@contents,@date) 
    end
      

  2.   


    alter PROCEDURE [dbo].[P_addmessges] 
    @username varchar(100)=null, 
    @title varchar(300), 
    @contents varchar(2000), 
    @date varchar(20), 
    @error int output 
    AS 
    insert into messages(username,title,contents,date) values(isnull(@username,'游客'),@title,@contents,@date) 
    go