一、簡單的儲存過程:
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
2. SQL存儲過程如何調用存儲過程
1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。
3. 求把SQL語句轉為存儲過程
create procere [dbo].[xxxx](@x nvarchar(20),@y int,@z int)
as
前面加這個就可以,XXXX是存儲的名字,後面括弧內的是參數
4. 將SQL語句轉換成存儲過程
不要弄些這樣的上來,把題目的要求給弄出來就行了。
5. 怎麼把普通SQL查詢語句改為存儲過程
存儲過程是一個包含多個SQL查詢語句的集合。
例如表格
tt,檢索表格所以數據的SQL語句為:
select
*
from
tt
;
下面使用一樣的SQL語句來創建一個存儲過程proc_test
IF OBJECT_ID (N'PROC_test', N'P') IS NOT NULL
DROP procere PROC_test;
GO
CREATE procere PROC_test
AS
select * from tt
GO這樣執行存儲過程proc_test
與SQL語句 select
*
from
tt
效果就是完全相同的
6. 如何可以將SQL語句作為參數傳到存儲過程
將SQL語句作為參數傳到存儲過程,請參見一下示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--
創建示範存儲過程
create
procere
mypro1(@strSql
nvarchar(4000))
as
execute
sp_executesql
@strsql
go
--
創建示範表並插入數據
create
table
test1
(id
int
primary
key,name
nvarchar(50));
insert
into
test1
values(100,'Johnson');
--
將SQL語句作為參數在存儲過程里執行
execute
mypro1
'select
*
from
test1;'
--
刪除示範對象
drop
table
test1;
drop
procere
mypro1
7. sql2008的存儲過程怎麼遷移到另外一台sql2008資料庫來著
兩台電腦的ip肯定是不一樣的了,網站連接資料庫第一就要知道連接哪裡的,表示一個資料庫在哪裡,一般需要ip地址和通訊埠,你得修改網站的有關程序或配置,使原來連接舊資料庫的,改為連接新資料庫。
估計創建資料庫時,你用的就是sqlserver的預設埠,需要確認sql2000和sql2008的預設埠是否一致,如果不一致,在修改網站配置的時候,別落下它,好在兩個配置通常緊挨著,也不會輕易被忽略。
8. sql2008的存儲過程怎麼遷移到另外一台sql2008資料庫來著
創建sp的腳本,在目標DB上運行一下。
如果有大量過程,那就使用工具軟體來比較、更新。
9. 如何用SQL語句在兩個資料庫間復制存儲過程
建議你還是用企業管理器導出SQL語句然後執行,這樣簡單些
當然也可以用命令生成腳本,不過命令比較繁,估計你看了就不想用了:
如何用命令生成SQL SERVER腳本
--以下生成整個資料庫的SQL腳本,我測試了,相當好用。
--(scptxfr.exe的路徑要正確以下是我的路徑)
declare @cMd varchar(1000)
set @cmd = 'master.dbo.xp_cmdshell ' +
'''c:\"Microsoft ' +
'SQL Server"' +
'\MSSQL\Upgrade\scptxfr.exe ' +
' /s YourServerName /p YourSAPassword /I /d YourDBName /f ' +
'c:\YourDBName.sql'''
exec (@cmd)
命令行語法:
SCPTXFR /s <伺服器> /d <資料庫> {[/I] | [/P <密碼>]}
{[/F <腳本文件目錄>] | [/f <單個腳本文件>]}
/q /r /O /T /A /E /C <CodePage> /N /X /H /G /Y /?
/s — 指示要連接到的源伺服器。
/d — 指示要為之編寫腳本的源資料庫。
/I — 使用集成安全性。
/P — sa 要用的密碼。請注意登錄 ID 始終為 sa。
若/P不使用或標志後面沒有密碼,
則將使用空密碼。不與 /I 兼容。
/F — 腳本文件應生成到的目錄。
這意味著為每個對象分類生成一個文件。
/f — 所有腳本將保存到的單個文件。
不與 /F 兼容。
/q — 在所生成的腳本中使用被引用的標識符。
/r — 為腳本中的對象包括 drop 語句。
/O — 生成 OEM 腳本文件。無法用於 /A 或 /T。
這是默認的行為。
/T — 生成 UNICODE 腳本文件。無法用於 /A 或 /O。
/A — 生成 ANSI 腳本文件。無法用於 /T 或 /O。
/? — 命令行幫助。
/E — 發生錯誤時停止腳本編寫。
默認行為是記錄該錯誤而後繼續。
/C — 指示替代伺服器 CodePage(代碼頁)的 CodePage。
/N — 生成 ANSI PADDING。
/X — 編寫 SP 和 XP 腳本以分隔文件。
/H — 生成不帶首部的腳本文件。(默認: 帶首部)。
/G — 使用指定的伺服器名稱作為所生成的輸出文件的前綴(
中的劃線)。
/Y — 為「擴展屬性」生成腳本(僅對 8.x 伺服器有效)。