Artykuły
Ilość wyświetleń: 1050 « powrót
/*
tworzenie tabeli
*/
DROP TABLE numer
GO
CREATE TABLE numer (
[id] int IDENTITY (1, 1) NOT NULL PRIMARY KEY,
[symbol] char(2) DEFAULT '',
[nr] int DEFAULT 0,
[status] int DEFAULT 0
)
GO
/*
wlasciwa procedura tworzaca identyfikator
*/
DROP PROCEDURE numer_nowy_numer
GO
CREATE PROCEDURE numer_nowy_numer
@pelny_nr varchar(20) OUTPUT, -- ta zmianna odpowiedzialna jest za zwrot wartosci
@typ int,
@rok int
AS
BEGIN
DECLARE @numer int
DECLARE @typ_numer varchar(2)
/* kod typu analizy */
SET @typ_numer = ''
IF (@typ = 1)
SET @typ_numer = 'SD'
IF (@typ = 2)
SET @typ_numer = 'KZ'
IF (@typ = 3)
SET @typ_numer = 'D'
/* pobranie biezacego numeru */
SELECT @numer = nr FROM numer WHERE symbol = @typ_numer
/* aktualizacja numeru */
UPDATE numer SET nr = nr + 1 WHERE symbol = @typ_numer
IF (@numer IS NULL)
SET @numer = 0
/* utworzeniu stringa numeru */
SET @pelny_nr = CAST(@numer AS varchar(10)) + '/' + @typ_numer + '/' + CAST(@rok AS char(4))
RETURN (@numer)
END
// wyznaczenie nowego numeru analizy
//----------------------------------------------------------
public string UtworzNumer(int typ, int rok)
{
string result = "";
SqlCommand cmd = new SqlCommand("numer_nowy_numer", (SqlConnection) database.GetConnection());
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter returnVal = new SqlParameter("@return", SqlDbType.NVarChar);
returnVal.Direction = ParameterDirection.ReturnValue;
// definicja parametru, ktory ma byc zwracany
SqlParameter numberVal = new SqlParameter("@pelny_nr", SqlDbType.NVarChar);
numberVal.Direction = ParameterDirection.Output;
numberVal.Size = 20;
try
{
// parametry
cmd.Parameters.Add( new SqlParameter("@typ", typ));
cmd.Parameters.Add( new SqlParameter("@rok", rok));
// dodanie parametru output
cmd.Parameters.Add(numberVal);
cmd.ExecuteNonQuery();
// odczyt wyniku stworzonego przez procedure
result = System.Convert.ToString(numberVal.Value);
}
catch (Exception e)
{
errorStore(e);
result = "";
}
return (result);
}