1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
use tempdb
go
drop table client
drop proc creer_client
go
CREATE TABLE [client] (
[id_client] [bigint] IDENTITY (1, 1) NOT NULL ,
[code_client] [varchar] (20) COLLATE French_CI_AS NOT NULL ,
[designation] [varchar] (50) COLLATE French_CI_AS NULL ,
[sceau] [timestamp] NOT NULL ,
CONSTRAINT [PK_client] PRIMARY KEY
(
[id_client]
) ON [PRIMARY]
) ON [PRIMARY]
GO
/* insérer des valeurs bâteau dans la table 'client' */
insert client (code_client, designation) values ('orig', 'orig')
go
CREATE PROCEDURE [creer_client]
@code_client varchar(20),
@designation varchar(50),
@id bigint OUTPUT,
@message varchar(80) OUTPUT
AS
/* toutes vérification finies */
insert client (code_client, designation) values (@code_client, @designation)
/* dernier client inséré */
set @id = scope_identity()
set @message='Le client a été créé dans la bdd.'
GO
/***************************************************
SCRIPT DE TEST DE LA PROCEDURE STOCKEE
CREER_CLIENT
****************************************************/
SET NOCOUNT ON /* ne pas afficher à chaque fois le nombre de lignes affectées */
/* valeurs qui seront assignées lors de chaque test */
DECLARE @RC int
DECLARE @code_client varchar(20)
DECLARE @designation varchar(50)
DECLARE @message varchar(80)
declare @code_client_temp varchar(20)
declare @designation_temp varchar(50)
/* client nouvellement créé */
DECLARE @id BIGINT
DECLARE @rc_attendu int /* code retour attendu après chaque test */
/***************************************************************
TEST DE LA PROCEDURE STOCKEE CREER_CLIENT
*/
DECLARE @test char(8)
DECLARE @i int
set @i = 2
set @test='test 1.' +convert(varchar,@i)
print ''
print @test + ' ********** '
-- Définir les valeurs de paramètre
set @code_client='codecli '+@test
set @designation=null
set @rc_attendu=0
/* executer la procédure stockée */
EXEC @RC = creer_client @code_client, @designation,
@id OUTPUT , @message OUTPUT
/* comparer les résultats */
IF @RC = @rc_attendu BEGIN
IF @RC = 0 AND (select count(*) from client where id_client=@id AND @designation=designation AND @code_client=code_client) = 1 BEGIN
print 'test réussi : client créé'
END ELSE IF @RC > 0 AND @id = -1 BEGIN
print 'test réussi : client non créé'
END ELSE BEGIN
goto erreur
END
END ELSE
BEGIN
BEGIN
erreur:
print 'résultat inattendu: '
print 'code retour:' +convert(varchar,@RC)+ ' (attendu:'+ convert(varchar,@rc_attendu)+ '), id:' +convert(varchar,@id)
print @message
select @code_client_temp=code_client, @designation_temp=designation from client where id_client=@id
print '['+@code_client_temp+'] vs ['+ @code_client + ']'
print '['+isnull(@designation_temp,'<null>') +'] vs ['+ isnull(@designation,'<null>')+']'
select * from client
END
END |
Partager