SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2018

Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Script Stored Procedure - Execute As, Real BUG?

Stamattina mi è capitato per la prima volta di creare lo script di esecuzione di una stored procedure con SQL Server Management Studio.

Premetto che prima di decidere di postare, ho provato la cosa su varie versioni:

Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86)
    Feb  9 2007 22:47:07
    Copyright (c) 1988-2005 Microsoft Corporation
    Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Microsoft SQL Server 2005 - 9.00.3054.00 (Intel X86)
    Mar 23 2007 16:28:52
    Copyright (c) 1988-2005 Microsoft Corporation
    Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Microsoft SQL Server 2005 - 9.00.3054.00 (X64)
    Mar 23 2007 18:41:50
    Copyright (C) 1988-2005 Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

Dopo avermi avvisato per il verificarsi di uno strano errore, il mio collega Luca mi ha indicato il percorso per riottenerlo. Si tratta della funzionalità di script (di EXECUTE, stored procedure) automatica integrata con SSMS.
Proviamo a ricreare il caso:

1) Creiamo una stored procedure come quella che segue, molto semplice, magari su tempdb o su di un database di prova:

CREATE PROCEDURE [dbo].[proc_esempio]

      @param1 real

AS

BEGIN

     

      SELECT @param1

END


2) Richiediamo lo script di EXECUTE ed eseguiamo lo script di EXECUTE proposto

DECLARE @RC int

DECLARE @param1 real(24,0)

 

-- TODO: Set parameter values here.

 

EXECUTE @RC = [Utili].[dbo].[proc_esempio]

   @param1


Otterremo il seguente errore:

Msg 2724, Level 16, State 4, Line 7

Parameter or variable '@param1' has an invalid data type.


Se notate meglio, a fianco di real c'è (24,0) che rende il tipo di dato non valido. Ovviamente rimuovendo il tutto e mantenendo solo real la stored procedure funziona come deve.
In effetti non mi era capitato mai di utilizzare la funzionalità di script di SSMS. Ho deciso di fare una prova anche con una funzione:

CREATE FUNCTION dbo.udf_esempio

(

      @param1 real

)

RETURNS real

AS

BEGIN

     

      RETURN @param1

 

END


Quando si cerca di scriptare la funzione, anche lo script della SELECT (visto che la EXECUTE non è possibile in questo caso), si ottiene:

SELECT [Utili].[dbo].[udf_esempio] (

   <@param1, real(24,0),>)

Insomma, quel real (24,0) non demorde .

Almeno, sulla versione 2008 il problema non persiste ..
Avevate mai incontrato questo problema o sentito parlare di questo errore? Io mai, visto che evito spesso i real , anzi non mi servono proprio di solito..

Stay Tuned!
Categoria: SQL Server 2005
mercoledì, 09 lug 2008 Ore. 12.59
Statistiche
  • Views Home Page: 585.111
  • Views Posts: 1.042.189
  • Views Gallerie: 609.341
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003