给你一段完整的CREATE PROCEDURE  InsertUser
@UserName varchar(255),
@UserPass varchar(255),
@UserTitle  nvarchar(255),
@Email varchar(255),
@BlogName nvarchar(512),
@Question nvarchar(255),
@Answer nvarchar(512),
@Introduce nvarchar(4000),
@Announce nvarchar(4000),
@UserID int output 
AsSet NOCOUNT ONdeclare @SysUserdir  varchar(255)
Set @SysUserdir = 'u'If Exists (select UserID from App_User Where UserName = @UserName)
RETURN 0
ELSE
Begin
INSERT INTO App_User (UserName,UserPass,UserTitle,UserDir,UserEmail,BlogName,Question,Answer,Introduce,Announce) VALUES(@UserName,@UserPass,@UserTitle,@SysUserdir,@Email,@BlogName,@Question,@Answer,@Introduce,@Announce)
SET @UserID = @@IDENTITY
RETURN 1
End
GOApp_User表结构
CREATE TABLE [App_User] (
[UserID] [int] IDENTITY (1, 1) NOT NULL ,
[UserName] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[UserTitle] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[UserPass] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[UserDir] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[UserIcon] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[UserEmail] [varchar] (512) COLLATE Chinese_PRC_CI_AS NULL ,
[CreateDate] [datetime] NOT NULL CONSTRAINT [DF_App_User_CreateDate] DEFAULT (getdate()),
[QQ] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[MSN] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[LastLoginIP] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[LastLoginTime] [datetime] NULL ,
[LockUser] [smallint] NOT NULL CONSTRAINT [DF_App_User_LockUser] DEFAULT (0),
[BlogName] [nvarchar] (512) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[BirthDate] [smalldatetime] NULL ,
[Question] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Answer] [varchar] (512) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[template] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_App_User_template] DEFAULT ('template001'),
[Introduce] [nvarchar] (4000) COLLATE Chinese_PRC_CI_AS NULL ,
[Announce] [nvarchar] (4000) COLLATE Chinese_PRC_CI_AS NULL ,
[LogCount] [int] NOT NULL CONSTRAINT [DF_App_User_LogCount] DEFAULT (0),
[CommentCount] [int] NOT NULL CONSTRAINT [DF_App_User_CommentCount] DEFAULT (0),
[MessageCount] [int] NOT NULL CONSTRAINT [DF_App_User_MessageCount] DEFAULT (0),
[NewMessageCount] [int] NOT NULL CONSTRAINT [DF_App_User_NewMessageCount] DEFAULT (0),
[GroupCount] [int] NOT NULL CONSTRAINT [DF_App_User_GroupCount] DEFAULT (0),
[TopicCount] [int] NOT NULL CONSTRAINT [DF_App_User_TopicCount] DEFAULT (0),
[ActionCount] [int] NOT NULL CONSTRAINT [DF_App_User_ActionCount] DEFAULT (0),
[MaxSize] [int] NOT NULL CONSTRAINT [DF_App_User_MaxSize] DEFAULT (50),
[ViewCount] [int] NOT NULL CONSTRAINT [DF_App_User_ViewCount] DEFAULT (0),
[UserSize] [int] NOT NULL CONSTRAINT [DF_App_User_UserSize] DEFAULT (0),
CONSTRAINT [PK_App_User] PRIMARY KEY  CLUSTERED 
(
[UserID]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO
调用代码:
conn = SqlConnection.getConnection();sql = "{? = call InsertUser(?,?,?,?,?,?,?,?,?,?)}";
CallableStatement callStatement;
callStatement = conn.prepareCall(sql);
callStatement.setString(2, _UserName);
callStatement.setString(3, _UserPass);
callStatement.setString(4, _UserTitle);
callStatement.setString(5, _UserEmail);
callStatement.setString(6, _BlogName);
callStatement.setString(7, _Question);
callStatement.setString(8, _Answer);
callStatement.setString(9, _Introduce);
callStatement.setString(10, _Announce);
callStatement.registerOutParameter(1, java.sql.Types.INTEGER);
callStatement.registerOutParameter(11, java.sql.Types.INTEGER);// 有记录集的返回
callStatement.execute();
int intReturn = callStatement.getInt(1);
int UserID = callStatement.getInt(11);if (intReturn == 1) {
out.print("OK");
} else {
out.print("该用户已经存在");}注意:返回值,传出参数的使用方法,
"{? = call InsertUser(?,?,?,?,?,?,?,?,?,?)}";
等号前面的是返回值

解决方案 »

  1.   

    callStatement.setString(2, "要插入的值");
    其它类似
      

  2.   

    找本书看看,建议你去学学Oracle的PL/SQL,应用广泛,或是DB2的。MySQL是小朋友玩的。。
      

  3.   

    net_lover(【孟子E章】) 给我的只是现成的,我想知道为什么要这样写,以及如何写?
    不过也很感谢你的完整代码哦,至少可以参考一下feihua317(光光) 
    我需要的是MSSQL Server,不是MySQL
    MySQL现在实际开发真的用的少吗?
    看样子是要找本书看了
      

  4.   

    MSSQL-SERVER的联机帮助里面有专门论述我有一本关于存储过程的专著,是PDF,太大,没法给你
      

  5.   

    为啥要这样写?应该设计者就这么设计的,。另外还有一种写法是callStatement.setString("UserName", _UserName);callStatement.setString方法就2种写法
      

  6.   

    loomman(一剑) 爱莫能助了,呵呵我看看联机帮助试试