存儲過程的格式
1、delimiter // ,聲明分隔符:DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼(這里如果不懂的話,你可以通過試錯的方法來理解)。
2、編寫存儲過程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ]參數名數據類形...])
例子:
1)create procere proc1(out s int) // 只有輸出
2)create procere proc2(in p_in bigint) // 只有輸入
3)create procere proc15() // 沒有輸入與輸出
4)create procere demo_multi_param(in id bigint,in name varchar(32),out c int) //多輸入與輸出
3、過程體的開始與結束使用BEGIN與END進行標識。
4、select count (*) into s from student; // 過程體,一系列的邏輯語句,sql語句
5、delimiter ; 用完了之後要把分隔符還原。
⑵ 怎麼寫存儲過程
一、整體格式。存儲過程的格式如下:
CREATE PROCEDURE [creator.]"proc_name" ( /* parameters,... */ )
/* RESULT ( column-name,... ) */
BEGIN
;
END
其中creator是用戶名,比如dba;proc_name是你自己起的過程名;後面的參數可有可無,視自己情況定,如果有格式如(a integer,b char(50));再下面的RESULT應該是返回值,這個沒用過不知道怎麼回事!
二、內容。把這些都寫好了可能是這樣:
CREATE PROCEDURE dba.myProcere ( @a integer,@b char(50))
BEGIN
;
END
但是這樣子還是不能編譯的,因為整個過程體是空的,而我學習的結果是過程中至少要有一個SQL語句。所以要這樣寫才不會出錯:
CREATE PROCEDURE dba.myProcere ( a integer,b char(50))
BEGIN
SELECT * FROM MyTable
END
三、語法。
1、分號。在寫的過程中最郁悶的問題是分號!最後發現好像是這樣:
每一句都要加分號,不管是SQl語句還是其它的什麼語句,但是最後保存後最後一句的分號會被自動刪除!(我用的是Sybase的Sybase Central)。
2、定義變數。
格式為Declare @varName integer;(注意有分號!)「@」號好像可有可無!
3、SELECT語句。
格式為:
SELECT Count(*) INTO @varName FROM MyTable WHERE id = @a;
4、if語句。
格式為:
if(varName > 0) then
return
end if;(注意還有分號!)
5、循環語句。
格式為:
loop
……
end loop;(注意分號!)
6、設置變數值。
格式為:
set @varName = 10;
set @varName = @varName2;
7、字元串。
Declare myString char(50);
set @myString = 'Hello!';
要用單引號!
8、定義游標。
格式為:
declare MyCursor dynamic scroll cursor for
select …… from …… where ……;
9、打開、使用和關閉游標。
Open MyCursor;
fetch next MyCursor into ……;
Close MyCursor;
10、調用方法。
string ls_name="test"
DECLARE ProcName1 PROCEDURE FOR ProcName2
@wg_wellid=2,@wg_wgid=1,@wg_stringsid=1,@bha_wellid=2,@bha_name=:ls_name;
execute ProcName1 ;
close ProcName1 ;
其中ProcName1 是調用程序中自定義的過程名,ProcName2是資料庫中存儲過程的名字,下面的傳入的參數。
⑶ 資料庫存儲過程怎麼編寫
第一步:點擊資料庫下的「可編程性」,選擇「存儲過程」,點擊滑鼠右鍵,選擇「新建存儲過程」
第二步:在create PROCEDURE 後 輸入存儲過程的名字,緊跟著的就是定義存儲過程的參數,接下來就可以去編寫自己所需要組裝的存儲過程語句了
第三步: 編譯存儲過程,在工具欄上按下執行按鈕,如果沒有錯誤,就編寫成功了。
第四步:調用:在sqlserver的語句查詢框中,輸入exec 存儲過程名 參數,執行就可以了。
基本語法格式如下:中括弧帶的是可選項
create proc | procere pro_name
[{@參數數據類型} [=默認值] [output],
{@參數數據類型} [=默認值] [output],
....
]
as
begin
SQL_statements
--業務處理
end
⑷ 存儲過程的參數類型哪幾種
存儲過程共有IN、OUT、INOUT三種參數類型,格式如下:CREATEPROCEDURE(IN|OUT|INOUT參數名數據類型...)存儲過程可以沒有參數,但如果在使用過程需要用到參數,需按上面的格式進行定義。
第一項:IN|OUT|INOUT,表示參數的類型,選擇其中的一種即可;第二項:參數名,表示參數的名稱;第三項:數據類型,表示這個參數的數據類型,如int、float、double、varcahr等;第四項:「…」,表示參數可以定義多個,如果有多個參數時按前三項的格式定義即可,每個參數間用英文狀態下的逗號「
⑸ 儲存過程的類型有哪些
問題一:存儲過程的種類 1系統存儲過程以sp_開頭,用來進行系統的各項設定.取得信息.相關管理工作。2本地存儲過程用戶創建的存儲過程是由用戶創建並完成某一特定功能的存儲過程,事實上一般所說的存儲過程就粗肢螞是指本地存儲過程。3臨時存儲過程分為兩種存儲過程:一是本地臨時存儲過程,以井字型大小(#)作為其名稱的第一個字元,則該存儲過程將成為一個存放在tempdb資料庫中的本地臨時存儲過程,且只有創建它的用戶才能執行它;二是全局臨時存儲過程,以兩個井字型大小(##)號開始,則該存儲過程將成為一個存儲在tempdb資料庫中的全局臨時存儲過程,全局臨時存儲過程一旦創建,以後連接到伺服器的任意用戶都可以執行它,而且不需要特定的許可權。4遠程存儲過程在SQL Server2005中,遠程存儲過程(Remote Stored Proceres)是位於遠程伺服器上的存儲過程,通常可以使用分飢李布式查詢和EXECUTE命令執行一個遠程存儲過程。5擴展存儲過程擴展存儲過程(Extended Stored Proceres)是用戶岩埋可以使用外部程序語言編寫的存儲過程,而且擴展存儲過程的名稱通常以xp_開頭。
問題二:sql,server中的存儲過程有幾種類型 》系統過程,用戶過程;
》內部過程,擴展存貯過程(外部dll)
問題三:SQL Server2005中存儲過程的類型有哪些 10分 存儲過程是指封裝了可重用代碼的模塊或常式。存儲過程可以接受輸入參數、向客戶端返回表格或標量結果和消息、調用數據定義語言 (DDL) 和數據操作語言 (DML) 語句,然後返回輸出參數。在 SQL Server 2005 中,存儲過程有兩種類型:Transact-SQL 或 CLR。
Transact-SQL
Transact-SQL 存儲過程是指保存的 Transact-SQL 語句 *** ,可以接受和返回用戶提供的參數。例如,存儲過程中可能包含根據客戶端應用程序提供的信息在一個或多個表中插入新行所需的語句。存儲過程也可能從資料庫向客戶端應用程序返回數據。
CLR
CLR 存儲過程是指對 Microsoft .NET Framework 公共語言運行時 (CLR) 方法的引用,可以接受和返回用戶提供的參數。它們在 .NET Framework 程序集中是作為類的公共靜態方法實現的。
問題四:sql server存儲過程的參數有哪些類型 int,char,nchar,nvarchar,varchar,text,date,time,datetime,bit,bool……
問題五:sql server存儲過程的參數有哪些類型 SQL Server存儲過程是SQL資料庫的重要組成部分,其中可以用到許多參數。在SQL Server存儲過程中,支持輸入(Input)、輸出參數(Output),也支持返回值參數(ReturnValue)。
返回值參數不是一個形參,而類似於編程中的返回值類型。它都是通過Return語句來返回的,而且在SQL Server中,必須返回INT型的數據,而且很顯然,只能有一個返回值,因為RETURN語句其實是會終止SQL Server存儲過程的。
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ALTER PROCEDURE [dbo].[GetCustomers]
(@rowcount INT OUTPUT)
AS
SELECT [CustomerID]
,[panyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
,[Region]
,[PostalCode]
,[Country]
,[Phone]
,[Fax]
FROM [Northwind].[dbo].[Customers]
SET @rowcount=
rowcount
問題六:在SQL中存儲過程的一般語法是什麼? sql server存儲過程語法
存儲過程就是作為可執行對象存放在資料庫中的一個或多個SQL命令。
定義總是很抽象。存儲過程其實就是能完成一定操作的一組SQL語句,只不過這組語句是放在資料庫中的(這里我們只談SQL Server)。如果我們通過創建存儲過程以及在ASP中調用存儲過程,就可以避免將SQL語句同ASP代碼混雜在一起。這樣做的好處至少有三個:
第一、大大提高效率。存儲過程本身的執行速度非常快,而且,調用存儲過程可以大大減少同資料庫的交互次數。
第二、提高安全性。假如將SQL語句混合在ASP代碼中,一旦代碼失密,同時也就意味著庫結構失密。
第三、有利於SQL語句的重用。
在ASP中,一般通過mand對象調用存儲過程,根據不同情況,本文也介紹其它調用方法。為了方便說明,根據存儲過程的輸入輸出,作以下簡單分類:
1. 只返回單一記錄集的存儲過程
假設有以下存儲過程(本文的目的不在於講述T-SQL語法,所以存儲過程只給出代碼,不作說明):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go
以上存儲過程取得userinfo表中的所有記錄,返回一個記錄集。通過mand對象調用該存儲過程的ASP代碼如下:
'**通過mand對象調用存儲過程**
DIM Mym,MyRst
Set Mym = Server.CreateObject(ADODB.mand)
Mym.ActiveConnection = MyConStr 'MyConStr是資料庫連接字串
Mym.mandText = getUserList '指定存儲過程名
Mym.mandType = 4 '表明這是一個存儲過程
Mym.Prepared = true '要求將SQL命令先行編譯
Set MyRst = Mym.Execute
Set Mym = Nothing
存儲嘩程取得的記錄集賦給MyRst,接下來,可以對MyRst進行操作。
在以上代碼中,mandType屬性表明請求的類型,取值及說明如下:
-1 表明mandText參數的類型無法確定
1 表明mandText是一般的命令類型
2 表明mandText參數是一個存在的表名稱
4 表明mandText參數是一個存儲過程的名稱
還可以通過Connection對象或Recordset對象調用存儲過程,方法分別如下:
'**通過Connection對象調用存儲過程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject(&qu......>>
問題七:商品在儲存過程中的變化形式有哪些 在商品交換發展的歷史過程中,隨著商品交換從偶然的行為逐步擴大成為經濟生活中的重要環節,商品的價值形式也逐步發展。從簡單的、個別的或偶然的價值形式,發展到總和的或擴大的價值形式,再發展到一般價值形式,最後發展到貨幣形式。 商品是使用價值和價值的統一。商品的使用價值是實實在在的,是看得見、摸得著的。米、布、房屋、自行車等等各種商品體的自然形態,體現著各種不同的使用價值,這是一目瞭然的。商品的價值實體是物化在商品中的一般人類勞動,與使用價值不同,商品的這種價值實體是看不見、摸不著的。即使把一件商品拆得粉碎,也找不到價值的任何影跡。這是因為,價值純粹是商品的社會屬性。價值實體雖然是已經消耗的勞動力即勞動,但並不是任何生產物質產品的勞動都會形成價值。只有當勞動產品成了供交換即供他人使用的商品,物化在商品中的勞動,才需要互相比較,才需要撇開其特殊的有用性質而把它看作無差別的一般人類勞動即抽象勞動。勞動產品轉化為商品和消耗在產品生產中的勞動轉化為價值,都是特定的社會關系的表現。價值既然純粹是商品的社會屬性,從商品體的自然形態中,當然無法找到它的影蹤,而只有從價值關系即商品與商品交換的社會關系中,才能探索它的存在。 當兩種商品互相交換,例如商品A與商品B相交換的時候,A、B兩種商品就發生了等價關系。在商品交換中,任何一方都不願吃虧。盡管在每個個別的交換行為中,由於各種各樣的原因,交換的一方吃虧、另一方佔便宜的事會經常發生;但從整體看,從長期趨勢看,商品交換必然是價值量相等的交換。例如,1件上衣同20碼麻布相交換,是因為 1件上衣和20碼麻布,在生產中耗費了等量的勞動,具有等量的價值。在這一商品交換關系中,20碼麻布是 1件上衣的交換價值。上衣的價值從上衣本身雖然看不出來,但它一旦同麻布交換,與麻布發生了價值關系,上衣的價值就可以從麻布上面表現了出來。商品的價值關系表明,價值是交換價值的內容,交換價值是商品價值的形式。在人類歷史中,隨著商品交換的發展,商品的價值形式也隨之變化和發展。
問題八:SQL的存儲過程 語法格式是什麼? ---判斷是否存在存儲過程
if exists( select name from sysobjects where name='proc_name' )
drop proc proc_name
go
---創建存儲過程
create proc proc_name
@parameter varchar(20),
@parameter2 int
as
主體語句
go
if exists:判斷是否存在
drop proc : 刪除存儲過程,後面接存儲過程名稱,名稱不用引起來
create proc: 創建存儲過程,後面接存儲過程名稱,名稱不用引起來
@parameter varchar(20): 參數,在執行存儲過程的時候需要傳入的參數,這里是字元類型,如果有多個參數的話,除了最後一個參數,其他的參數後面需要加逗號(英文狀態),如果不需要傳入,直接去掉就行了。
create proc proc_name
as
主體語句
go
as : 關鍵字
主體語句:就是你要做的操作的語句,和平時的完全一樣,存儲過程就相當把平時的sql語句在外面加了個殼的感覺。比如這里你需要查詢一個表 select * from tableName1 那麼這里就這樣寫
create proc proc_name
as
select * from tableName1
go
傳參數:
create proc proc_name
@parameter varchar(20)
as
select * from tableName where [email protected]
go
執行的時候這樣
exec proc_name '小明'
其他的操作都是這樣的。
希望對你有幫助
問題九:外存主要有哪些類型 外儲存器是指除計算機內存及CPU緩存以外的儲存器,此類儲存器一般斷電後仍然能保存數據。常見的外儲存器有硬碟、軟盤、光碟、U盤等。
問題十:存儲過程傳的參數是list,應該用什麼類型接受 看下這個吧。
bbs.csdn/topics/390094413
有代碼
⑹ PL_sql如何執行oracle存儲過程
要成功執行這個存儲過程,你需要注意幾點:
1.select * from ods_area; 不能直接在pl/sql 中作為語句執行。
應該用 select 欄位 into plsql變數 from 表名;
的形式來獲取表中的數據,保存到plsql變數中。
2. 存儲過程的語法格式為:
create or replace procere area
is
--變數聲明;
begin
--過程主體;
end area;
3. 如果存儲過程代碼無誤,可以通過 "/" 來執行代碼,編譯存儲過程。
4.通過exec 或 execute 來調用編譯後的存儲過程。
例如:
-- 創建procere:
create or replace procere area
is
num number ;
v_areaRecord al%ROWTYPE;
begin
--例子1
select * into v_areaRecord from al;
--例子2
select 12345 into num from al;
end area;
/
-- 通過 / 執行;
--調用
exec area;
⑺ SQL的存儲過程 語法格式是什麼
---判斷是否存在存儲過程
if exists( select name from sysobjects where name='proc_name' )
drop proc proc_name
go
---創建存儲過程
create proc proc_name
@parameter varchar(20),
@parameter2 int
as
主體語句
go
if exists:判斷是否存在
drop proc : 刪除存儲過程,後面接存儲過程名稱,名稱不用引起來
create proc: 創建存儲過程,後面接存儲過程名稱,名稱不用引起來
@parameter varchar(20): 參數,在執行存儲過程的時候需要傳入的參數,這里是字元類型,如果有多個參數的話,除了最後一個參數,其他的參數後面需要加逗號(英文狀態),如果不需要傳入,直接去掉就行了。
create proc proc_name
as
主體語句
go
as : 關鍵字
主體語句:就是你要做的操作的語句,和平時的完全一樣,存儲過程就相當把平時的sql語句在外面加了個殼的感覺。比如這里你需要查詢一個表 select * from tableName1 那麼這里就這樣寫
create proc proc_name
as
select * from tableName1
go
傳參數:
create proc proc_name
@parameter varchar(20)
as
select * from tableName where name=@parameter
go
執行的時候這樣
exec proc_name '小明'
⑻ 存儲過程應用語句有哪些
存儲過程與其他面向對象的程序設計語言一樣,同樣包含數據類型、流程式控制制、語句注釋、輸入和輸出與自己的函數庫。存儲過程的流程式控制制語句有ifelse、casewhenthen、while等,但沒有for循環,跟C++、Java等語言的流程式控制制語句非常類似。條件語句條件語句是流程式控制制的重要組成部分,跟其他編程語言一樣,存儲過程允許使用if關鍵字來作條件判斷,除此之外,還可以使用case來實現其他更為靈活的條件控制。
1.if語句(1)if語法if語句是最普通的條件控制語句,其語法簡單易懂,在存儲過程代碼中隨處可見,也是使用頻率最高的條件判斷語句。
語法格式:if…then…elseif…then…else…endif其中,((1)if後面跟判斷條件;
(2)elseif後面跟判斷條件;
(3)then後面跟條件分支語句塊;
(4)可以有多個elseif…then語句塊,也可以沒有;(5)else表示以上條件均不滿足時會執行的語句塊;
(6)整個條件語句塊的最後面以endif表示結束。if語句的用法,以語句「ifcondition_para=1then」開始條件控制,以語句「endif」結束條件控制,中間用「elseif」「else」作條件分支控制。單個SQL語句if語法語句格式:if(expr1