Creare Stored Procedure in SQL Server

Mattepuffo's logo
Creare Stored Procedure in SQL Server

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!


Condividi

Commentami!