Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

DataSets - Πρόβλημα με create new stored procedure

Îåêßíçóå áðü ôï ìÝëïò DeClen. Τελευταία δημοσίευση από το μέλος DeClen στις 29-01-2007, 13:35. Υπάρχουν 0 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-01-2007, 13:35 24198

    DataSets - Πρόβλημα με create new stored procedure

    Παιδιά καλημέρα,

    Έχω ένα προβληματάκι με τα 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 μου πετάει λάθος. Tongue Tied

    Να σημειώσω ότι αν προσθέσω τον κώδικα στον 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?

    Ευχαριστώ. Smile
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems