當前位置:編程學習大全網 - 源碼下載 - 怎麽使用存儲過程

怎麽使用存儲過程

問題壹:SQL 中存儲過程怎麽使用? sql存儲過程及應用

壹、簡介:

存儲過程(Stored Procedure), 是壹組為了完成特定功能的SQL 語句,集經編譯後

存儲在數據庫中,用戶通過指定存儲過程的名字並給出參數,如果該存儲過程帶有參數來執行

它,

在SQL Server 的系列版本中,存儲過程分為兩類:系統提供的存儲過程和用戶自定義存儲過程

系統SP,主要存儲master 數據庫中,並以sp_為前綴並且系統存儲過程主要是從系統表中獲取

信息,從而為系統管理員管理SQL Server。用戶自定義存儲過程是由用戶創建,並能完成

某壹特定功能,如:查詢用戶所需數據信息的存儲過程。

存儲過程具有以下優點

1.存儲過程允許標準組件式編程(模塊化設計)

存儲過程在被創建以後,可以在程序中被多次調用,而不必重新編寫該存儲過程的SQL語句,而

且數

據庫專業人員可隨時對存儲過程進行修改,但對應用程序源代碼毫無影響。因為應用程序源代

碼只包含存

儲過程的調用語句,從而極大地提高了程序的可移植性。

2.存儲過程能夠實現快速的執行速度

如果某壹操作包含大量的Transaction-SQL 代碼,,或分別被多次執行,那麽存儲過程要比批處理

執行速度快很多,因為存儲過程是預編譯的,在首次運行壹個存儲過程時,查詢優化器對其進

行分析優

化,並給出最終被存在系統表中的執行計劃,而批處理的Transaction-SQL 語句在每次運行時

都要進行

編譯和優化,因此速度相對要慢壹些。

3.存儲過程能夠減少網絡流量

對於同壹個針對數據數據庫對象的操作,如查詢修改,如果這壹操作所涉及到的Transaction-SQL

語句被組織成壹存儲過程,那麽當在客戶計算機上調用該存儲過程時,網絡中傳送的只是該調

用語句,否

則將是多條SQL 語句從而大大增加了網絡流量降低網絡負載。

4.存儲過程可被作為壹種安全機制來充分利用

系統管理員通過,對執行某壹存儲過程的權限進行限制,從而能夠實現對相應的數據訪問權限的

制。

二、變量

@I

三、流程控制語句(if else | select case | while )

Select ... CASE 實例

DECLARE @iRet INT, @PKDisp VARCHAR(20)

SET @iRet = '1'

Select @iRet =

CASE

WHEN @PKDisp = '壹' THEN 1

WHEN @PKDisp = '二' THEN 2

WHEN @PKDisp = '三' THEN 3

WHEN @PKDisp = '四' THEN 4

WHEN @PKDisp = '五' THEN 5

ELSE 100

END

四、存儲過程格式

創建存儲過程

Create Proc dbo.存儲過程名

存儲過程參數

AS

執行語句

RETURN

執行存儲過程

GO

*********************************************************/

-- 變量的聲明,sql裏面聲明變量時必須在變量前加@符號

DECLARE @I INT

-- 變量的賦值,變量賦值時變量前必須加set

SET @I = 30

-- 聲明多個變量

DECLARE @s varchar(10),@a INT

-- Sql 裏if語句

IF 條件 BEGIN

執行語句

END

ELSE BEGIN

......>>

問題二:SQL存儲過程如何調用存儲過程? 在存儲過程裏用exec 執行另壹存儲過程名及它需要的參數就可以了

如 exec撫abc '1', '2'(abc 是存儲過程的名字, '1','2' 是它的參數

問題三:oracle中的存儲過程,有什麽作用,以及怎麽在代碼中使用? 樓上也不知道從哪扒下來的,壹看LZ就是初學,舉點例子不行嗎?

比如建立個測試表

create table test(id int,name varchar2(10),counts int); insert into test values (1,'張三',100);insert into test values (2,'李四',200); mit;

現在給妳出個題目是

查詢所有人加在壹起的counts是多少

創建存儲過程

create or replace p_test --創建存儲過程,asv_counts int;--定義變量begin --開始select sum(counts) into v_counts from test;--將得到的結果放到變量裏DBMS_OUTPUT.PUT_LINE(v_counts);--將結果打印輸出end;--結束

執行這種不帶輸入參數的

begin p_test;end;

然後妳檢查下結果

再給妳創建壹個帶輸入參數的

題目是,查詢id為1的人名是什麽

create or replace p_test1(v_id int)asv_name varchar2(10);beginselect name into v_name from test where id=v_id;DBMS_OUTPUT.PUT_LINE(v_name);end;

執行時這樣

beginp_test1(1);end;

第2個我沒給妳寫註釋,妳看妳自己應該能理解吧

補充壹下,存儲過程不壹定只是執行查詢,也可以做刪除或者修改等sql語句,總體來說就是幾個或N個sql語句的 *** ,來完成系統內某些特定的需求,這些需求可以是壹個sql搞定的,也可以是多個sql組合的

問題四:sql server怎麽調用存儲過程 在SQL Server數據庫的維護或者Web開發中,有時需要在存儲過程或者作業等其他數據庫操作中調用其它的存儲過程,下面介紹其調用的方法

在SQL Server數據庫的維護或者Web開發中,有時需要在存儲過程或者作業等其他數據庫操作中調用其它的存儲過程,下面介紹其調用的方法

壹、SQL SERVER中調用不帶輸出參數的存儲過程

SQL 代碼

--存儲過程的定義

create procedure [sys].[sp_add_product]

(

@m_viewcount int = 0

,@m_hotcount int = 0

)

as

go

--存儲過程的調用

declare @m_viewcount int

declare @m_hotcount int

exec sp_add_product @m_viewcount,@m_hotcount

二、SQL SERVER中調用帶輸出參數的存儲過程

SQL 代碼

--定義存儲過程

create procedure [sys].[sp_add_product]

(

@m_viewcount int = 0

,@m_hotcount int output

)

--存儲過程的調用

declare @m_viewcount int =0

declare @m_hotcount int

exec dbo.sp_add_product @m_viewcount,@m_hotcount output

問題五:怎樣調用存儲過程裏面的存儲過程 這裏壹定要用Closed,因為其他非Closed狀態再執行Open時會引發不能重復開啟的異常

if (sqlConn.State != ConnectionState.Closed)

sqlConn.Open();

Sqlmand sqlCmd = new Sqlmand();

sqlCmd.Connection = sqlConn;

sqlCmd.mandText = proc_history;

sqlCmd.mandType = mandType.StoredProcedure;sqlCmd.Parameters.Add(new SqlParameter(@like, NewTitle));

如果要返回數據集,則不要調用sqlCmd.ExecuteNonQuery();,直接調用下面的方法

SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCmd);

DataSet ds = new DataSet();

sqlDA.Fill(ds);

return ds;

如果是執行DML語句,就直接調用如下

sqlCmd.ExecuteNonQuery();

/* 以上兩種情況不可同時存在 */

問題六:怎麽在PL/SQL Developer 中調用存儲過程呢? 看妳存儲過程裏是否有參數了

正常的話,在左邊列表找到procedure裏找到妳寫的那存儲過程名,看上邊有紅叉沒,沒紅叉就是編譯成功,有紅叉就是還有問題,需要改

然後右鍵點這個存儲過程,(中文版選擇測試按鈕,英文版選擇test按鈕),然後下邊有輸入參數的地方,輸入,點上邊的齒輪即可

還有種方法,就是開壹個sql窗口,寫以下代碼

begin

存儲過程名;

end;

然後點齒輪運行,註意兩個分號不可少

問題七:數據庫中的存儲過程怎麽用 啊!!求解..... 10分 關鍵字:procedure

例子:

SQL> create [or replace] procedure procedure_name is

begin

--開始執行

insert into test('10001','Visket');

end;

/

以上操作就能為test表添加壹條信息

執行存儲過程procedure用的命令是exec

記住存儲過程中,語句結尾壹定要有分號

問題八:ORACLE存儲過程怎麽調用? PL/SQL SQL窗口 輸入存儲過程名,右鍵測試(英文版為test唬,出現測試界面,輸入對應參數後F8,如果沒有參數直接F8.

問題九:存儲過程中怎麽使用row 壹般分為十種情況,每種語法各不相同: 1、 創建語法create proc | procedure pro_name [{@參數數據類型} [=默認值] [output], {@參數數據類型} [=默認值] [output], .... ]as SQL_statements2、 創建不帶參數存儲過程--創建存儲過程if (exists (select * from sys.objects where name = 'proc_get_student')) drop proc proc_get_studentgocreate proc proc_get_studentas select * from student;--調用、執行存儲過程exec proc_get_student;3、 修改存儲過程--修改存儲過程alter proc proc_get_studentasselect * from student;4、 帶參存儲過程--帶參存儲過程if (object_id('proc_find_stu', 'P') is not null) drop proc proc_find_stugocreate proc proc_find_stu(@startId int, @endId int)as select * from student where id between @startId and @endIdgoexec proc_find_stu 2, 4;5、 帶通配符參數存儲過程--帶通配符參數存儲過程if (object_id('proc_findStudentByName', 'P') is not null) drop proc proc_findStudentByNamegocreate proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%')as select * from student where name like @name and name like @nextName;goexec proc_findStudentByName;exec proc_findStudentByName '%o%', 't%';6、 帶輸出參數存儲過程if (object_id('proc_getStudentRecord', 'P') is not null) drop proc proc_getStudentRecordgocreate proc proc_getStudentRecord( @id int, --默認輸入參數 @name varchar(20) out, --輸出參數 @age varchar(20) output--輸入輸出參數)as select @name = name, @age = age from student where id = @id and sex = @age;go-- declare @id int, @name varchar(20), @temp varchar(20)......>>

問題十:如何使用sql語句查看存儲過程 --下面這條語句可以查看存儲過程具體代碼exec sp_helptext 存儲過程名--下面這條語句查看數據庫中有哪些存儲過程select * from sysobjects where type='P'

  • 上一篇:安卓切換軟件回來後軟件退出安卓切換軟件
  • 下一篇:為什麽我總是把手機連上無線網絡卻上不了網?
  • copyright 2024編程學習大全網