Creare Stored Procedure in SQL Server
Era da parecchio che non usavo SQL Server, e devo dire che non mi sto trovando male (sicuramente meglio che con Oracle).
Oggi vediamo come creare le Stored Procedure.
Ne vedremo due esempi: una per l'estrazione dati, e l'altra per l'inserimento.
In entrambi i casi abbiamo dei parametri fissi per visualizzare eventuali errori.
Cominciamo dall'estrazione dati:
USE [mio_db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER PROCEDURE [dbo].[usp_RicercaNews]
-- Parametri Fissi
@ERROR_NUMBER AS int = 0 OUTPUT
, @ERROR_SEVERITY AS int = 0 OUTPUT
, @ERROR_STATE AS int = 0 OUTPUT
, @ERROR_PROCEDURE AS nvarchar(126) = '' OUTPUT
, @ERROR_LINE AS int = 0 OUTPUT
, @ERROR_MESSAGE AS nvarchar(4000) = '' OUTPUT
, @NUMROWSAFFECTED AS int = null OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
SELECT * FROM [dbo].[News]
END TRY
BEGIN CATCH
PRINT 'CATCH:' + ERROR_MESSAGE()
-- Rollback any active or uncommittable transactions before
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT @ERROR_NUMBER = ERROR_NUMBER()
, @ERROR_SEVERITY = ERROR_SEVERITY()
, @ERROR_STATE = ERROR_STATE()
, @ERROR_PROCEDURE = ERROR_PROCEDURE()
, @ERROR_LINE = ERROR_LINE()
, @ERROR_MESSAGE = ERROR_MESSAGE()
END CATCH;
END
Il CREATE OR ALTER è valido solo dalle versioni 2016 in poi.
Negi altri casi dovete specificare solo una delle due istruzioni.
Qui sotto una procedure per inserimento dati:
USE [mio_db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_InsertNews]
@Titolo nvarchar(20),
@Testo text,
@Pubblicata bit,
@Data date,
-- Parametri Fissi
@RecordID AS int = 0 OUTPUT,
@ERROR_NUMBER AS int = 0 OUTPUT,
@ERROR_SEVERITY AS int = 0 OUTPUT,
@ERROR_STATE AS int = 0 OUTPUT,
@ERROR_PROCEDURE AS nvarchar(126) = '' OUTPUT,
@ERROR_LINE AS int = 0 OUTPUT,
@ERROR_MESSAGE AS nvarchar(4000) = '' OUTPUT,
@NUMROWSAFFECTED AS int = null OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
INSERT INTO [dbo].[News] (
[Titolo],
[Testo],
[Pubblicata],
[Data]
)
VALUES (
@Titolo,
@Testo,
@Pubblicata,
@Data
);
SELECT @RecordID = @@IDENTITY
END TRY
BEGIN CATCH
PRINT 'CATCH:' + ERROR_MESSAGE()
-- Rollback any active or uncommittable transactions before
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT @ERROR_NUMBER = ERROR_NUMBER()
, @ERROR_SEVERITY = ERROR_SEVERITY()
, @ERROR_STATE = ERROR_STATE()
, @ERROR_PROCEDURE = ERROR_PROCEDURE()
, @ERROR_LINE = ERROR_LINE()
, @ERROR_MESSAGE = ERROR_MESSAGE()
END CATCH;
END
Se dovete creare delle procedure easy, potete prendere queste e cambiargli i vostri dati.
Enjoy!
database sql sql server microsoft stored procedure
Commentami!