存儲過程的測試
1. 這個存儲過程如何測試
CREATE PROCEDURE [dbo].[Test]
@TableName char(10),
@TableValue bigint
AS
DECLARE @sql nvarchar(4000)
BEGIN
SET NOCOUNT ON;
--如果TableName表存在則插入一條TableValue
SET @sql=
N'if exists
(select * from sysobjects
where id = object_id(N''[dbo].['+@TableName+']'')
and OBJECTPROPERTY(id, N''IsUserTable'') = 1)
INSERT INTO '+@TableName+'(TableValue) VALUES(cast('+@TableValue+') as nvarchar(20))'
EXEC sp_executesql @sql,N'@TableName char(10),@TableValue bigint',
@TableName,@TableValue
END
2. 如何測試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;
3. 如何在PLSQL中測試我自己寫的存儲過程
1、所謂的存儲過程,它的意義就是在伺服器上運行的SQL代碼。可以通過PL SQL聯接伺服器來進行調試。
2、PL SQL聯接伺服器後,找到相應的存儲過程,點右鍵點運行即可進行測試,會彈出對話讓你填入需要代入的參數。
3、如果伺服器上還沒有建立相關存儲過程,你要做的當然是使用SQL語句先進行建立。
4. sql server測試存儲過程
你沒必要定義output類型,因為最後的select語句已經把你要的結果輸出了
除了實際運行看數據,別的也沒什麼號驗證的了,如果語法不對,創建時就失敗了
exec Get_operator @Czy_code=『code』,@Czy_password='pwd'
執行以下看結果嘍
另外查詢裡面沒必要用事務,可以去掉transaction
5. oracle plsql怎麼調試存儲過程
1、首先是編寫存儲過程,編譯無誤;
2、添加debug信息。為了能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點擊需要調試的存儲過程名稱,在彈出菜單中選中[add debug information],這樣就為包體添加了調試信息;
3、選擇需要調試的存儲過程名稱,點擊右鍵,在彈出菜單中 選擇[Test],進去測試窗口,測試窗口中有為了測試該存儲過程自動所產生的代碼,當然你也可以自己另外加入和修改代碼,自動生成的代碼已經足夠了。
6. 在pl/sql中怎麼測試存儲過程
第一 create存儲過程,此處報錯,則是語法錯誤居多,需要根據情況修正語句。
第二 執行存儲過程,驗證執行結果,在Proceres包下 找到你自己創建的存儲過程,右鍵點擊測試按鈕,出現測試窗口
第一個綠色箭頭,意思直接跑起來,第二個進入男色方框,意思進入此模塊內,第三個跳出當前運行模塊,第四個跳轉入錯誤點。
多用第二個
7. 如何測試mysql觸發器和存儲過程
測試衡隱衫觸發器的主要方法是:
手工或通過程序向觸發器對應的源表插入或更新咐腔數據,觀察資料庫是否報錯,如果沒有錯誤則看一下數據是否准確更新到資料庫了
測試存儲過程的主要方法有:
通過客攜鋒戶端進行調用,java用的是CallabledStatement進行調用
通過SQL語句調用,格式是:call mypro(參數);
8. 存儲過程的測試一直在執行,關不掉
1、存儲過程中是否有 LOOP ?
如果有 的在end loop 添加 EXIT WHEN 游標名%NOTFOUND (意思是如果沒有這個游標,就跳出)
2、沒有loop 的話
手動停止掉當前的存儲過程吧。語句如下:
--先查運行的存儲過程sid
select /*rule*/ sid from v$access where object='存儲過程名'
--通過sid 找到serial
select sid ,serial#,paddr from v$session where sid='上一句查到的sid'
--kill 掉存儲過程
alter system kill session 'sid','serial#'
9. 如何調試存儲過程和package
1.打開PL/SQL Developer
如果在機器上安裝了PL/SQL Developer的話,打開PL/SQL Developer界面
輸入用戶名,密碼和host名字,這個跟在程序中web.config中配置的完全相同,點擊確定
找到需要調試的存儲過程所在的包(Package bodies),如PACK_ACTIVITY,點擊右鍵,在彈出菜單中選擇[查看],得到包中的所有存儲過程和他們的代碼.
2.添加debug信息
為了能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點擊需要調試的包,在彈出菜單中選中[添加調試信息].
這樣就為包體添加了調試信息。
3.調試存儲過程
現在所有的准備工作都做好了,可以調試跟蹤存儲過程了。
選擇需要調試的存儲過程,點擊右鍵,在彈出菜單中選擇[測試],進去測試窗口. 測試窗口中有為了測試該存儲過程自動所產生的代碼,當然你也可以自己另外加入和修改代碼,對於我們目前只是為了調試存儲過程,自動生成的代碼已經足夠了。接著按照如下的步驟進行調試。
(1)添加存儲過程所需要的參數,我們項目中的大多數存儲過程都是需要參數的,參數可以在測試窗口右下部分輸入。
如:GetPanNO_New需要一個輸入參數v_employeeid,我們輸入180,輸出參數是mycursor,是查看結果的,不需要輸入任何值。
(2)開始調試,點擊[調試]菜單-[開始](或者按F9),就進去調試模式了,程序開始停在begin這一行.
(3)以後的調試過程跟我們熟悉的的調試過程就一樣了:
運行(Ctrl+R)
單步進入(Ctrl+N)
單步跳過(Ctrl+O)
單步退出(Ctrl+T)
或者點擊debug工具條上的按扭: 當按Ctrl+N進去存儲過程的源代碼中後
在這個窗口中可以查看過程中的變數值和堆棧。
(4)調試運行完了後,可以查看結果如下(點擊mycursor變數旁邊的按鈕).
10. 存儲過程並行測試,如何並發測試
這個問題一般是數據鎖造成的,INSERT的時候一般不會遇到這種問題,你在A或者B存儲過程中查看一下,一定有UPDATE語句或者 SELECT FOR UPDATE語句,兩個並發的段悔蔽請求同時鎖一條記錄就會造成一條成功另一條失敗。
不過按照你的描述最大的可能性是另外一種情況,就是兩握州次INSERT插入的前陪數據某個欄位是相同的值,好死不死的,這個相同值的欄位又設置了唯一索引或者約束,那麼當第一條記錄插入成功後第二條記錄就會必然失敗回滾。