1 在查詢分析器中寫入如下代碼:
CREATE PROCEDURE InsertUser
@loginName varchar(50),
@realName varchar(50),
@passWord varchar(50),
@userId int output As Set NOCOUNT ON
If Exists (select userID from tsysuser Where loginName = @loginName)
RETURN 0
ELSE
Begin
INSERT INTO tsysuser (loginName,realName,password) VALUES(@loginName,@realName,@passWord)
SET @userID = @@IDENTITY
RETURN 1
End
GO 注意和Oracle中的不用於相似之處。由於本文寫得是java中對sqlserver的調用,故這裡不多說語法。 2 Java相關代碼,只是部分的。為的是說明問題。所以連接數據庫的代碼省去。
Connection conn = getConnection();//這個方法是數據庫調用的。就是普通的jdbc。故省去
CallableStatement proc = null;
String sql = "{?=call InsertUser(?,?,?,?)}";
try {
proc = conn.prepareCall(sql); proc.registerOutParameter(1,Java.sql.Types.INTEGER);//定義返回值
proc.setString(2, "sa");
proc.setString(3, "sd");
proc.setString(4, "sd"); proc.registerOutParameter(5,Java.sql.Types.INTEGER);//定義返回值
proc.execute();
System.out.println(proc.getString(1));//這裡根據存儲過程的返回值來進行相應的操作。判斷執行是否成功
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
總結:sqlserver中的存儲過程和Oracle中的基本類似。但是由於數據庫底層的差異,語法會有相應的差別。對於一些Oracle中的方法,在sqlserver中並不能執行,甚至會報錯。至於Java中的調用,則基本上一致。