Παιδιά καλημέρα,
Έχω ένα προβληματάκι με τα DataSets (...μάλλον και αυτά έχουν πρόβλημα μαζί μου). Λοιπόν έχω ένα DataSet και περνάω κάποια events (Fill, GetData κτλ.) στους Table Adapters. Εκτός από τα απλά queries θέλησα να δημιουργήσω και μια καινούργια strored procedure (δεν ήθελα να χρησιμοποιήσω μια stored procedure από την database μίας και προσπαθώ να ξεχωρίσω όσο το δυνατόν περισσότερο τα DATA από το DAL).
Anyway, πηγαίνω στον Table Adapter και Add Query --> Create new stored procedure --> Update και γράφω το update query μου.
UPDATE WhoAmI SET
Who_Name=@E_Name,
Who_Surname=@E_Surname,
Who_Birth = CASE @E_Date WHEN '1980/1/1' THEN NULL
ELSE @E_Date
END
WHERE Who_Id=@E_IdΌταν ολοκληρώσω το query επιλέγω preview SQL script. O κώδικας που παράγεται από το VS είναι
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'UpdateQuery' AND user_name(uid) = 'dbo')
DROP PROCEDURE dbo.UpdateQuery
GO
CREATE PROCEDURE dbo.UpdateQuery
(
@E_Name nvarchar(50),
@E_Surname nvarchar(50),
@E_Id int
)
AS
SET NOCOUNT OFF;
UPDATE WhoAmI SET
Who_Name=@E_Name,
Who_Surname=@E_Surname,
Who_Birth = CASE @E_Date WHEN '1980/1/1' THEN NULL
ELSE @E_Date
END
WHERE Who_Id=@E_Id
GOΣτον παραπάνω κώδικα είναι προφανές ότι υπάρχει λάθος. Δεν έχει δηλωθεί η μεταβλητή
@E_Date. Για κάποιο λόγο το VS δεν έχει "δει" αυτή την παράμετρο. Για αυτό το λόγο, όταν φτάσω στο τελικό στάδιο δημιουργίας της stored procedure, το VS μου πετάει λάθος.

Να σημειώσω ότι αν προσθέσω τον κώδικα στον SQL Server Express (με δηλωμένο φυσικά το @E_Date) εκτελείτε κανονικότατα.
CREATE PROCEDURE TESTPROCEDURE
(
@E_Name nvarchar(50),
@E_Surname nvarchar(50),
@E_Date smalldatetime,
@E_Id int
)
AS
UPDATE WhoAmI SET
Who_Name=@E_Name,
Who_Surname=@E_Surname,
Who_Birth = CASE @E_Date WHEN '1980/1/1' THEN NULL
ELSE @E_Date
END
WHERE Who_Id=@E_Id
GOΡε παιδιά πως μπορώ να διορθώσω την κατάσταση; Δεν γίνεται να "πείσω" το VS ότι το @E_Date είναι παράμετρος ούτως ώστε να μου την συμπεριλάβει και αυτή στη δήλωση μεταβλητών της procedure?
Ευχαριστώ.