GETDATE in Sotred Procedure

mercoledì 16 gennaio 2008 - 16.10

Teech Profilo | Expert

Stò provando a creare una Stored Procedure che effettua degli Insert su alcune tabelle.
In una di queste tabelle sono presenti 2 campi datetime: il primo lo devo popolare con Data/Ora del momento e l'altro lasciarlo momentaneamente a NULL

Prativamente la mia tabella è così composta:

Codice - int
Inizio - datetime
Fine - datetime

nella Stored Procedure ho inserito il seguente statement:
INSERT MiaTabella (Codice, Inizio) VALUES (10,Getdate)
Mi dice che:
"Il nome Getdate non è consentito in questo contesto. E possibile utilizzare solo costanti, espressioni costanti e (in alcuni casi) variabili."
Ho provato a scrivere:
INSERT MiaTabella (Codice, Inizio) VALUES (10,Getdate())
Ma mi restituisce un errore di sintassi ')'

Cercando in giro letto che essendo una funzione non deterministica non può essere usata nelle Stored Procedure.

Cosa significa esattamente?
Ma soprattutto, come faccio a scrivere la dataora del momento attraverso una Stored Procedure?

Grazie!!!

--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

lbenaglia Profilo | Guru

>nella Stored Procedure ho inserito il seguente statement:
>INSERT MiaTabella (Codice, Inizio) VALUES (10,Getdate)
>Mi dice che:
>"Il nome Getdate non è consentito in questo contesto. E possibile
>utilizzare solo costanti, espressioni costanti e (in alcuni casi)
>variabili."
Esatto, ti sei dimenticato le parentesi tonde dopo la funzione GETDATE.

>Ho provato a scrivere:
>INSERT MiaTabella (Codice, Inizio) VALUES (10,Getdate())
>Ma mi restituisce un errore di sintassi ')'
Impossibile

USE tempdb; CREATE TABLE dbo.Tabella( Codice int NOT NULL PRIMARY KEY, Inizio datetime NOT NULL, Fine datetime NULL ); GO CREATE PROCEDURE dbo.upAdd AS INSERT dbo.Tabella(Codice, Inizio) VALUES(10, GETDATE()); GO EXEC dbo.upAdd; /* Output: (1 row(s) affected) */ SELECT * FROM dbo.Tabella; /* Output: Codice Inizio Fine ----------- ----------------------- ------ 10 2008-01-16 17:16:23.107 NULL (1 row(s) affected) */ DROP PROCEDURE dbo.upAdd; DROP TABLE dbo.Tabella;

L'errore sarà da un'altra parte...

>Cercando in giro letto che essendo una funzione non deterministica
>non può essere usata nelle Stored Procedure.
Falso, questo vale solo per le User-defined Functions.

>Grazie!!!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Teech Profilo | Expert

Il problema era che avevo aperto la transazione senza chiuderla... Guardando bene quello che hai scritto mi sono accorto che avevo messo il BEGIN senza l'END...

L'errore non mi aiutava molto

Grazie mille!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5