create table mytb
(tid int,
subject varchar(100),
content varchar(100))
eg:測試數據:
20 計算機應用 應用軟體開發
21 計算機操作系統 操作系統詳解
22 c# c#開發實戰
=======================================
說明一點:tid編號是連續的,如(1,2,3,4···)
存儲過程如下,測試通過:
create proc my_search
@beg_id int ,
@end_id int
as
declare @names varchar(200),
@bcp varchar(8000)
if(@beg_id<@end_id)
begin
while @beg_id<=@end_id
begin
select @names=subject from mytb where tid=@beg_id
set @bcp = 'bcp "SELECT content FROM 資料庫名.dbo.mytb where tid = ' + rtrim(@beg_id) + '" queryout "E:\11\' + rtrim(@names) + '.txt" -c -U"sa" -P"sa"'
EXEC master..xp_cmdshell @bcp
set @beg_id=@beg_id+1
end
end
==================加路徑後過程==============
--exec my_search 20,21,'E:\11'
ALTER proc my_search
@beg_id int ,
@end_id int ,
@path varchar(200)
as
if(right(@path,1)='\')
begin
set @path=left(@path,len(@path)-1)
end
declare @names varchar(200),
@bcp varchar(8000)
if(@beg_id<@end_id)
begin
while @beg_id<=@end_id
begin
select @names=subject from mytb where tid=@beg_id
set @bcp = 'bcp "SELECT content FROM cdma.dbo.mytb where tid = ' + rtrim(@beg_id) + '"含段輪 queryout "'+@path+'\' + rtrim(@names) + '.txt" -c -U"sa" -P"sa"'
EXEC master..xp_cmdshell @bcp
set @beg_id=@beg_id+1
end
end
=======
呵呵燃碰,很抱歉啊 樓主,沒能實現你的要求,
MSSQL我不熟,我想語法大概也是差不多吧,
如果對您有談信幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
vaela
⑵ 如何測試mysql觸發器和存儲過程
1.
為了測試觸發器和存儲過程,首先建立一張簡含運單的表:
復制代碼
代碼如下:
CREATE
TABLE
`airuser`
(
`userId`
int(11)
NOT
NULL
AUTO_INCREMENT,
`username`
varchar(128)
NOT
NULL,
PRIMARY
KEY
(`userId`)
)ENGINE=InnoDB
DEFAULT
CHARSET=utf8
2.
為該表的插入操作,創建一張記錄表:
復制代碼
代碼如下:
CREATE
TABLE
`airuser_record`
(
`id`
int(11)
NOT
NULL
AUTO_INCREMENT,
`username`
varchar(45)
DEFAULT
NULL,
`edittime`
timestamp
NULL
DEFAULT
NULL,
`edittype`
varchar(45)
DEFAULT
NULL,
PRIMARY
KEY
(`id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
3.
編寫一個插入操作的談畝梁觸發器:
復制代碼
代碼如下:
DROP
TRIGGER
insert_trigger;
delimiter
|
CREATE
TRIGGER
insert_trigger
BEFORE
INSERT
ON
airuser
FOR
EACH
ROW
BEGIN
INSERT
INTO
airuser_record
SET
username
=
NEW.username,
edittime=now(),
edittype='insert';
END;
SHOW
TRIGGERS;
4.
為批量插入編寫存儲過程:
復制代碼
代碼如下:
DROP
procere
createUsers;
delimiter
|
create
procere
createUsers(IN
count
int)
begin
declare
i
int;
set
i=0;
while
i<count
do
insert
into
airuser
set
username=concat('耐模user_',i);
set
i=i+1;
end
while;
end;
show
procere
status;
5.
調用存儲過程,驗證存儲過程是工作的,並驗證在插入記錄前,觸發器能正確被觸發:
復制代碼
代碼如下:
call
createUsers(10);
6.
最後通過插入記錄表再次驗證:
復制代碼
代碼如下:
SELECT
*
FROM
mars_jpa.airuser_record;
⑶ mysql 存儲過程總結(一)
1、存儲過程定義:
存儲過程是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,調用存儲過程可以簡化應用開發 人員的很多工作,減少數據在資料庫和應用伺服器之間的傳輸,對於提高數據處理的效率是有好處的。 存儲過程思想上很簡單,就是資料庫 SQL 語言層面的代碼封裝與重用。
2、特點:
封裝,復用 : 可以把某一業務SQL封裝在存儲過程中,需要用到 的時候直接調用即可。
可以接收參數,也可以返回數據 :再存儲過程中,可以傳遞參數,也可以接收返回 值。
減少網路交互,效率提升 : 如果涉及到多條SQL,每執行一次都是一次網路傳 輸。 而如果封裝在存儲過程中,我們只需要網路交互一次可能就可以了。
3、基本語法
(1)創建:
(2)調用:
(3)查看:
(4)刪除
注意: 在命令行中,執行創建存儲過程的SQL時,需要通過關鍵字 delimiter 指定SQL語句的 結束符。
⑷ mysql 存儲過程怎麼調用
ASP中如何調用存儲過程1 這也是最簡單的方法,兩個輸入參數,無返回值:
set connection = server.createobject("adodb.connection")
connection.open someDSN
Connection.Execute "procname varvalue1, varvalue2"
'將所有對象清為nothing,釋放資源
connection.close
set connection = nothing
2 如果要返回 Recordset 集:
set connection = server.createobject("adodb.connection")
connection.open someDSN
set rs = server.createobject("adodb.recordset")
rs.Open "Exec procname varvalue1, varvalue2",connection
'將所有對象清為nothing,釋放資源
rs.close
connection.close
set rs = nothing
set connection = nothing
3 以上兩種方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。
首先說明,返回值有兩種。一種是在存儲過程中直接return一個值,就象C和VB的函數返回值那樣;
另一種是可以返回多個值,存儲這些值的變數名稱需要在調用參數中先行指定。
這個例子要處理多種參數,輸入參數,輸出參數,返回記錄集以及一個直接返回值(夠全了吧?)
存儲過程如下:
use pubs
GO
-- 建立存儲過程
create procere sp_PubsTest
-- 定義三個參數變數,注意第三個,特別標記是用於輸出
@au_lname varchar (20),
@intID int,
@intIDOut int OUTPUT
AS
SELECT @intIDOut = @intID + 1
SELECT *
FROM authors
WHERE au_lname LIKE @au_lname + '%'
--直接返回一個值
RETURN @intID + 2
調用該存儲過程的asp程序如下:
<%@ Language=VBScript %>
<%
Dim CmdSP
Dim adoRS
Dim adCmdSPStoredProc
Dim adParamReturnValue
Dim adParaminput
Dim adParamOutput
Dim adInteger
Dim iVal
Dim oVal
Dim adoField
Dim adVarChar
『這些值在 VB 中是預定義常量,可以直接調用,但在 VBScript 中沒有預定義
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200
iVal = 5
oVal = 3
'建一個command對象
set CmdSP = Server.CreateObject("ADODB.Command")
'建立連結
CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"
'定義command 對象調用名稱
CmdSP.CommandText = "sp_PubsTest"
'設置command調用類型是存儲過程 (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc
'往command 對象中加參數
'定義存儲過程有直接返回值,並且是個整數,省缺值是4
CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
'定義一個字元型輸入參數
CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
'定義一個整型輸入參數
CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
'定義一個整型輸出參數
CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)
'運行存儲過程,並得到返回記錄集
Set adoRS = CmdSP.Execute
'把每個記錄列印出來,其中的欄位是虛擬的,可以不用管
While Not adoRS.EOF
for each adoField in adoRS.Fields
Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF
Next
Response.Write "<br>"
adoRS.MoveNext
Wend
'列印兩個輸出值:
Response.Write "<p>@intIDOut = 「 & CmdSP.Parameters("@intIDOut").Value & "</p>"
Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"
Set adoRS = nothing
Set CmdSP.ActiveConnection = nothing
Set CmdSP = nothing
⑸ 請教如何調試mysql 的存儲過程和函數
終旅盯於找到了一個好東東: Core Lab MyDeveloper Studio ,幾乎我拆寬和想要的功能都有,特巧晌別是代碼提示和調試功能!可惜找不到注冊機,可以試用60天,強烈個
⑹ Mysql存儲過程是在創建時預編譯還是在執行時預編譯,怎麼能看出來或者怎麼測出來
語法
show create {procere|function} sp_name;
例如跡局查姿沒讓看存儲過察純程myPro的創建語句
show create procere myPro;
查看自定義函數myFunc的創建語句
show create function myFunc;
⑺ mysql怎麼調試存儲過程
mysql調試存儲過程具體方法:
在你的存儲過程中加入如下語句:
SELECT
變數1,變數2;
然後用mysql自帶的cmd程序進入mysql>
下。
call
你的存儲過程名(輸入參數1,@輸出參數);(注:這里幫助下新同學,如果你的存儲過程有輸出變數,那麼在這里只需要加
@
然後跟任意變數名即可);
即可發現你的變數值被列印到了cmd下
⑻ 如何測試mysql觸發器和存儲過程
測試觸發器的主要方法是:
手工或通過程序向觸發器對應的源表插入或更新數據,觀察資料庫是否報錯,如果沒有錯誤則看一下數據是否准確更新到資料庫了
測試存儲過程的主要方法有:
通過客戶端進行調用,java用的是CallabledStatement進行調用
通過SQL語句調用,格式是:call mypro(參數);
⑼ mysql 存儲過程
.關於MySQL的存儲過程
存儲過程是資料庫存儲的一個重要的功能,但是MySQL在5.0以前並不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。
MySQL存儲過程的創建
(1).格式
MySQL存儲過程創建的格式:CREATE PROCEDURE過程名([過程參數[,...]])
[特性...]過程體
這里先舉個例子:
mysql>DELIMITER//
mysql>CREATEPROCEDUREproc1(OUTsint)
->BEGIN
->SELECTCOUNT(*)INTOsFROMuser;
->END
->//
mysql>DELIMITER;
- 註:
(1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。
(2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。
(3)過程體的開始與結束使用BEGIN與END進行標識。
⑽ MySQL的存儲過程怎樣進行單步調試
好像沒有調試的功能,不過你可以用select語句輸出一些變數的信息