存儲過程編寫
㈠ 存儲過程怎麼寫啊
//創建存儲過程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是傳進去的變數;
drop procere userData;//銷毀這個存儲過程。
call userData(2) //調用存儲過程。
(1)存儲過程編寫擴展閱讀:
sql中的存儲過程及相關介紹:
CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數
(SQL Server 7.0以上版本),參數的使用方法如下:
@參數名數據類型[VARYING] [=內定值] [OUTPUT]。
每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。
[內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數。
同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。
參考資料來源:網路-儲存過程
㈡ sql怎樣新建存儲過程
一:創建沒有參數的存儲過程:
CREATE PROCEDURE select_all
AS
BEGIN
SELECT * from T_login1
GO
二:創建帶參數的存儲過程:
CREATE PROCEDURE select_name
@id uniqueidentifier
AS
BEGIN
SELECT * from T_login1 where PSN0001A=@id
GO
(2)存儲過程編寫擴展閱讀:
創建存儲過程的注意事項:
1、保持事務簡短,事務越短,越不可能造成阻塞。
2、在事務中盡量避免使用循環while和游標,以及避免採用訪問大量行的語句。
3、在啟動事務前完成所有的計算和查詢等操作,避免同一事務中交錯讀取和更新。可以使用表變數預先存儲數據。即存儲過程中查詢與更新使用兩個事務實現。
4、超時會讓事務不執行回滾,超時後如果客戶端關閉連接sqlserver自動回滾事務。如果不關閉,將造成數據丟失,而其他事務將在這個未關閉的連接上執行,造成資源鎖定,甚至伺服器停止響應。
㈢ 用SQL怎樣編寫一個存儲過程
create proc 要定義的視圖名 as select 參數 from 視圖名
㈣ sql 存儲過程語句編寫
要到達你的要求,在存儲過程中必須使用動態SQL語句。
一個簡化的例子:
createprocereMyDynamicSQL
@tblwherenvarchar(200)--a==aora==xxx
as
begin
declare@sqlnvarchar(max)
--動態拼接sql語句
set@sql=N'select*from[表一]where'+@tblwhere
--執行
executesp_executesql@sql
end
㈤ 如何編寫資料庫存儲過程
存儲過程代碼參考如下:
create
or
replace
procere
bak_pay_list_xxx(local_net
in
varchar2,bak_month
in
varchar2,ret
out
varchar2)
is
ls_sql
varchar2(1024);
ls_sql_del
varchar2(1024);
begin
...
end
bak_pay_list_xxx;
㈥ 存儲過程的編寫
我是這樣理解的:
1、要求根據UserId,查T_Mail_User表,得到MailId,再查T_Mail表獲得郵件。
2、同時可以獲得用戶的收藏郵件。即不但提供UserId輸入,而且提供「是否要取收藏記錄」的輸入參數。
3、同時支持條件查詢,比如,按發送日期等查詢,默認1=1,即沒有條件語句。
這樣,存儲過程中關鍵的語句為
if(@filterString is null)
set @filterString='1=1'
declare cmdStr char(256)
if(isGetFavorite)
set cmdStr='select b.* from T_Mail_User a,T_Mail b
where a.isFavorite=1 and a.UserId=@userId and a.MailId=b.MailId and a.MailType=0 and '+@filterString
else
...a.isFavorite=0...
exec(cmdStr)
上面假設收件箱標識為0,如果參數化,此存儲過程也可用於查用戶的發件箱等。
上面的@filterString就是條件字元串,或者『1=1』可能由前台提供,此時不必要第一個if。
㈦ 新手學習 Oracle存儲過程怎麼編寫
示例參考:
建立存儲過程
CREATE OR REPLACE PROCEDURE P_name--存儲過程名字
(
i_var in int, --輸入參數1
o_var OUT varchar2 --輸出參數1
)
IS
v_STR VARCHAR2(200); --定義存儲過程內部的局部變數
BEGIN
--下面是存儲過程的主體實現部分
v_STR := i_var;
dbms_output.put_line(v_STR);
o_var := v_STR;
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--列印錯誤信息
END P_name
㈧ 編寫存儲過程
1 select PersonName from tb_職員 z
left join tb_考勤 k on z.PersonID=k.PersonID
where (k.Cio=i and k.Ctime>N'0830') or (k.Cio=O and k.Ctime<N'1730')
2 select count(*) as num,PersonName,z.PersonID from tb_職員 z
left join tb_考勤 k on z.PersonID=k.PersonID
where (k.Cio=i and k.Ctime>N'0830') or (k.Cio=O and k.Ctime<N'1730') and num>=10
group by z.PersonID
㈨ 編寫一個存儲過程,急急
不需要存儲過程
一個sql就行
select 起運港 ,目的地, 船名, 航次 , sum(case when 箱類 = 'GP' then 1 else 0 end ) as GP,
sum(case when 箱類 = 'HQ' then 1 else 0 end ) as HQ,
SUM(case when 箱類 = 'FR' then 1 else 0 end ) as FR,
SUM(case when 箱類 = 'TK' then 1 else 0 end ) as TK
from tcard