Sored Procedure

martedì 13 marzo 2007 - 15.58

bluelions Profilo | Senior Member

Ho una stored procedure con parametri in ingresso,di cui un valore tipo datetime
quando eseguo la stored per fare una prova,
exec insert_prova pippo,pluto,getdate()
mi va in errore di conversione da varchar a smalldate time

Questa è la stored:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


CREATE PROCEDURE [dbo].[insert_prova]
@nome as varchar(50),
@Cognome as varchar(50),
@DataNascita as smalldatetime,

AS
DECLARE @errorcode as int
SET @errorcode = -1 -- errore interno alla stored procedure

BEGIN TRANSACTION

INSERT INTO wc_Anagrafica
(Nome,Cognome,DataNascita,)
VALUES
(@nome,@cognome,@DataNascita)


IF (@@ERROR <> 0)
SET @errorcode = 0

RETURN @errorcode

amelix Profilo | Expert

La virgola a fianco DataNascita è un errore di trascrizione?
Andrea
http://www.MelisWeb.eu/

bluelions Profilo | Senior Member

no vabbè non è quello l'errore....ho sbagliato io a scrivere.

sanbiz Profilo | Senior Member

Hai verificato il formato della data che passi alla sp? Stai usando un formato ISO o è uan semplice stringa?
Ti consiglio, come avrai visto molte volte, di utilizzare il formato 'yyyymmdd hh:mm:ss'
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

bluelions Profilo | Senior Member

E' possibile un esempio...visto che sono poco pratico in sql

sanbiz Profilo | Senior Member

>E' possibile un esempio...visto che sono poco pratico in sql
Ok.
Quello di seguito è il tuo esempio, con relativa chiamata alla sp.
Il parametro della data è stato passato in formato iso in questo modo eviti gli errori legati alla localizzazione.

Se infatti imposti 'set language us_english' e tenti di passare la data in questo formato '26/05/1973' otterrai il tuo errore, poichè il formato corretto dovrebbe essere '05/26/1973'

set nocount on

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- Creo la tabella di prova
create table wc_Anagrafica
(
nome varchar(50),
Cognome varchar(50),
DataNascita smalldatetime
)
GO

CREATE PROCEDURE [dbo].[insert_prova]
@nome as varchar(50),
@Cognome as varchar(50),
@DataNascita as smalldatetime

AS
DECLARE @errorcode as int
SET @errorcode = -1 -- errore interno alla stored procedure

INSERT INTO wc_Anagrafica
(Nome,Cognome,DataNascita)
VALUES
(@nome,@cognome,@DataNascita)


IF (@@ERROR <> 0)
SET @errorcode = 0

RETURN @errorcode
go

-- Eseguo la sp
exec insert_prova 'sandro', 'bizioli','19730526'


-- Elimino gli oggetti utilizati
drop procedure [insert_prova]
drop table wc_Anagrafica
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

bluelions Profilo | Senior Member

ok, e sono d'accordo con te,però alla stored gli devo passare la data attuale,quindi la funzione getdate(), come faccio ?

sanbiz Profilo | Senior Member

>ok, e sono d'accordo con te,però alla stored gli devo passare
>la data attuale,quindi la funzione getdate(), come faccio ?

convert(varchar(8), getdate(), 112)
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
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