當前位置:首頁 » 存儲配置 » 怎麼調用存儲過程

怎麼調用存儲過程

發布時間: 2022-01-30 11:57:57

A. sql存儲過程怎麼使用

一、簡單的儲存過程:

1、創建一個存儲過程

create procere GetUsers()

begin

select * from user;

end;12345

2、調用存儲過程

call GetUsers();12

3、刪除存儲過程

drop procere if exists GetUsers;

二、帶參數的存儲過程

1、MySql 支持 IN (傳遞給存儲過程) , OUT (從存儲過程傳出) 和 INOUT (對存儲過程傳入和傳出) 類型的參數 , 存儲過程的代碼位於 BEGIN 和 END 語句內 , 它們是一系列 SQL 語句 , 用來檢索值 , 然後保存到相應的變數 (通過指定INTO關鍵字) ;

2、下面的存儲過程接受三個參數 , 分別用於獲取用戶表的最小 , 平均 , 最大分數 , 每個參數必須具有指定的類型 , 這里使用十進制值(decimal(8,2)) , 關鍵字 OUT 指出相應的參數用來從存儲過程傳出

create procere GetScores(

out minScore decimal(8,2),

out avgScore decimal(8,2),

out maxScore decimal(8,2)

)

begin

select min(score) into minScore from user;

select avg(score) into avgScore from user;

select max(score) into maxScore from user;

end;1234567891011

3、調用此存儲過程 , 必須指定3個變數名(所有 MySql 變數都必須以@開始) , 如下所示 :

call GetScores(@minScore, @avgScore, @maxScore);12

4、該調用並沒有任何輸出 , 只是把調用的結果賦給了調用時傳入的變數@minScore, @avgScore, @maxScore, 然後即可調用顯示該變數的值 :

select @minScore, @avgScore, @maxScore;

5、使用 IN 參數 , 輸入一個用戶 id , 返回該用戶的名字 :

create procere GetNameByID(

in userID int,

out userName varchar(200)

)

begin

select name from user

where id = userID

into userName;

end;12345678910

6、調用存儲過程 :

call GetNameByID(1, @userName);

select @userName;123

B. SQL存儲過程如何調用存儲過程

1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。

C. js怎樣調用存儲過程

JDBC調用存儲過程:CallableStatement 在java裡面調用存儲過程,寫法那是相當的固定: Class.forName(.... Connectionconn=DriverManager.getConnection(.... /** *p是要調用的存儲過程的名字,存儲過程的4個參數,用4個?號佔位符代替 *其餘地方寫法固定 */ CallableStatementcstmt=conn.prepareCall("{callp(?,?,?,?)}"); /** *告訴JDBC,這些個參數,哪些是輸出參數,輸出參數的類型用java.sql.Types來指定 *下面的意思是,第3個?和第4個?是輸出參數,類型是INTEGER的 *Types後面具體寫什麼類型,得看你的存儲過程參數怎麼定義的 */ cstmt.registerOutParameter(3,Types.INTEGER); cstmt.registerOutParameter(4,Types.INTEGER); /** *p是要調用的存儲過程的名字,存儲過程的4個參數,用4個?號佔位符代替 *其餘地方寫法固定 */ CallableStatementcstmt=conn.prepareCall("{callp(?,?,?,?)}"); /** *在我這里第1個?和第2個?是輸入參數,第3個是輸出參數,第4個既輸入又輸出 *下面是設置他們的值,第一個設為3,第二個設為4,第4個設置為5 *沒設第3個,因為它是輸出參數 */ cstmt.setInt(1,3); cstmt.setInt(2,4); cstmt.setInt(4,5); //執行 cstmt.execute(); //把第3個參數的值當成int類型拿出來 intthree=cstmt.getInt(3); System.out.println(three); //把第4個參數的值當成int類型拿出來 intfour=cstmt.getInt(4); System.out.println(four); //用完別忘給人家關了,後開的先關 cstmt.close(); conn.close(); JDBC調用存儲過程,掌握這一個程序足夠了. 以下是上面程序使用的存儲過程的代碼,我用的是Oracle資料庫,不過不論是什麼資料庫,對於你的程序,JDBC這一端寫法都是一樣的. createorreplaceprocerep (v_ainnumber,v_bnumber,v_retoutnumber,v_tempinoutnumber) is begin if(v_a>v_b)then v_ret:=v_a; else v_ret:=v_b; endif; v_temp:=v_temp 1; end;

D. oracle 怎麼調用存儲過程

ORACLE存儲過程 以oracle自帶例子資料庫的表舉例
1、

create or replace procere p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;

創建了存儲過程不代表運行了存儲過程;
運行此存儲過程 :
方式一 exec p;
方式二
begin
p;
end;
2、帶參數的存儲過程
in 相當於程序里的參數,供傳入用,在存儲過程不能改變其值;
out 相當於程序里的返回值,在存儲過程中可以為其賦值傳出;
in out 既可以當參數又可以當返回值用;
不帶上述說明符默認為in類型;

下例中v_a v_b 為in類型
v_c 為out類型
v_d 為in out 類型

create or replace procere p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;

---> 調試時:
可以在命令窗口調試,出錯時 用show errors 顯示出錯信息;
可以在plDv中調試;

---> 運行時:
可以在命令窗口運行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中調試;

E. Java如何實現對存儲過程的調用

import java.sql.*;
public class ProcereTest
{
public static void main(String args[]) throws Exception
{
//載入驅動
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
//獲得連接
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");

//創建存儲過程的對象
CallableStatement c=conn.prepareCall("{call getsum(?,?)}");

//給存儲過程的第一個參數設置值
c.setInt(1,100);

//注冊存儲過程的第二個參數
c.registerOutParameter(2,java.sql.Types.INTEGER);

//執行存儲過程
c.execute();

//得到存儲過程的輸出參數值
System.out.println (c.getInt(2));
conn.close();

}
}

F. 如何調用存儲過程

過程:沒有返回值,select 不可能調用
調用過程有專門的語法:call 過程名([實參列表])

G. 怎麼調用存儲過程

DAL層寫個查詢方法
Public object Search()
{
SqlConnection conn = new SqlConnection("server=............");
SqlParameter[] meters = new SqlParameter[] { new SqlParameter("@Database",SqlDbType.NVarChar,10)};
meters[0].Value = "dataBaseName";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText="GetAllVehiNum";
cmd.CommandType = CommandType.StoredProcere;
cmd.Parameters.AddRange(meters);
conn.Open();
object result = cmd.ExecuteScalar();
return result;
}
BLL 層寫調用它的方法
Public object Go()
{
return dal.Search();
}
展示層調用,this.lable1.Text=bll.Go().ToString();

H. 怎麼調用一存儲過程

EXECSP_INSERT_MOCTE_PL@GDDB,@GDDH,'5601','2013060005','000612','9001'

你不會調用帶參數的存儲過程嗎

I. JAVA中如何調用存儲過程

Connection conn = null;
CallableStatement cStmt = null;
PreparedStatement pStmt = null;
ResultSet rs = null;

conn = ConnectionManagerDao.getConn();
//關鍵代碼
cStmt = conn.prepareCall("{call proc_PagingVie(?,?,?,?,?,?,?,?,?) }");
//call 存儲過程名(?,?,?)-問號的是參數

J. Java中是如何調用存儲過程的(詳細代碼)

//存儲過程create or replace Procere countBySal(
p_sal emp.sal%type,
p_count OUT number
)as
begin
select count(*) into p_count from emp where sal >= p_sql;
end countBySal; //調用步奏import java.sql.CallableStatement; //帶哦用存儲過程所必須的語句借口
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;public class EmpUtil {

public static int countBySal(double sal) throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:test";
Connection cn=DriverManager.getConnection(url, "scott", "tiger");
String sql="{call countBySal(?,?)}";//調用存儲過程的語句,call後面的就是存儲過程名和需要傳入的參數
CallableStatement cst=cn.prepareCall(sql);
cst.setDouble(1, sal);//設置in參數的值
cst.registerOutParameter(2, Types.INTEGER);//注冊out參數的類型
cst.execute();
int result = cst.getInt(2);
cst.close();
cn.close();
return result;
}

public static void main(String[] args) {
int count;
try {
count = EmpUtil.countBySal(3000);
System.out.println("工資在3000元以上的人數為:"+count);
} catch (Exception e) {
e.printStackTrace();
}

}

}

熱點內容
手游伺服器搭建教程失敗 發布:2024-09-23 02:00:21 瀏覽:686
短暫的訪問 發布:2024-09-23 01:29:08 瀏覽:828
安卓手機怎麼設置4位數 發布:2024-09-23 01:24:58 瀏覽:548
5g和演算法 發布:2024-09-23 01:20:40 瀏覽:507
pandas開發程序編譯 發布:2024-09-23 01:13:58 瀏覽:466
android應用被系統回收 發布:2024-09-23 01:10:36 瀏覽:447
c語言餐廳管理系統 發布:2024-09-23 01:01:35 瀏覽:95
linux系統新加網卡怎麼配置 發布:2024-09-23 01:01:34 瀏覽:895
java自我介紹一分鍾 發布:2024-09-23 00:51:34 瀏覽:674
告訴我解除密碼是多少 發布:2024-09-22 23:58:11 瀏覽:755