דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. sql server

sql server

מתוזמן נעוץ נעול הועבר תוכנה
29 פוסטים 2 כותבים 792 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    שרה רחל
    כתב ב נערך לאחרונה על ידי
    #21
    USE [lib]
    GO
    
    /****** Object:  Table [dbo].[AUTHER]    Script Date: 7/17/2020 7:55:40 AM ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[AUTHER](
    	[AUTHER_ID] [int] IDENTITY(1,1) NOT NULL,
    	[AUTHER_NAME] [nvarchar](50) NULL,
     CONSTRAINT [PK_AUTHER] PRIMARY KEY CLUSTERED 
    (
    	[AUTHER_ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    
    
    USE [lib]
    GO
    
    /****** Object:  Table [dbo].[DOC]    Script Date: 7/17/2020 7:56:12 AM ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[DOC](
    	[DOC_ID] [int] IDENTITY(1,1) NOT NULL,
    	[DOC_NAME] [nvarchar](50) NULL,
    	[AUTHER_ID] [int] NULL,
    	[DOC_PATH] [nvarchar](50) NOT NULL,
    	[DOC_DATE] [date] NULL,
     CONSTRAINT [PK_DOC] PRIMARY KEY CLUSTERED 
    (
    	[DOC_ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[DOC]  WITH CHECK ADD  CONSTRAINT [FK_DOC_AUTHER] FOREIGN KEY([AUTHER_ID])
    REFERENCES [dbo].[AUTHER] ([AUTHER_ID])
    GO
    
    ALTER TABLE [dbo].[DOC] CHECK CONSTRAINT [FK_DOC_AUTHER]
    GO
    
    

    אולי צריך להגדיר בפרוצדורה RETURN?

    OdedDvirO תגובה 1 תגובה אחרונה
    0
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      השיב לשרה רחל ב נערך לאחרונה על ידי
      #22

      @שרה-רחל אוקי.
      אחרי קצת חיפושים, מצאתי את הפוסט הזה שדן בבעיה. על פי האמור שם, הבעייה נמצאת באמת בקריאה לפרוצדורה מתוך C#.
      בקריאה יש להשתמש ב ExecuteScalar במקום ב Execute.
      נשמח להתעדכן אם אכן הפעיה נפתרה

      תגובה 1 תגובה אחרונה
      0
      • ש מנותק
        ש מנותק
        שרה רחל
        כתב ב נערך לאחרונה על ידי
        #23

        @OdedDvir אמר בsql server:

        ExecuteScalar

        זה הקוד של השליחה לפונקציה ושיניתי כאמור כפי שכתבתם רק עכשיו זה מתריע לי שהפונקיה מחזירה OBJECTולא INT

         public int InsertDoc( string docName, string autherName, string docPath, DateTime docDate)
                {
                    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("lib`")))
                    {
                       
                        List<Doc> doc = new List<Doc>();
        
                        doc.Add(new Doc { DocName = docName , autherName = autherName, DocPath = docPath , DocDate = docDate });
        
                        return connection.ExecuteScalar("dbo.INSERT_DOC @docName, @autherName, @docPath, @docDate", doc);
        
                    }
                }
        
        תגובה 1 תגובה אחרונה
        0
        • ש מנותק
          ש מנותק
          שרה רחל
          כתב ב נערך לאחרונה על ידי
          #24

          מנסה להמיר לINT

                          return Convert.ToInt32(connection.ExecuteScalar("dbo.INSERT_DOC @docName, @autherName, @docPath, @docDate", doc));
          

          ומחזיר לי את השגיאה בהרצה An enumerable sequence of parameters (arrays, lists, etc) is not allowed in this context

          OdedDvirO תגובה 1 תגובה אחרונה
          0
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            השיב לשרה רחל ב נערך לאחרונה על ידי
            #25

            @שרה-רחל אני חושב שזה בגלל שהפרוצדורה מחזירה רשומה ולא ערך יחיד.
            תנסו להחליף את הערך המוחזר בפרוצדורה.
            במקום:

            SELECT SCOPE_IDENTITY() as D_ID
            

            לרשום:

            RETURN SCOPE_IDENTITY()
            
            תגובה 1 תגובה אחרונה
            2
            • ש מנותק
              ש מנותק
              שרה רחל
              כתב ב נערך לאחרונה על ידי
              #26

              @OdedDvir אמר בsql server:

              RETURN SCOPE_IDENTITY()

              לא עזר
              ניסיתי גם להריץ דרך הSQL SERVER ישירות
              וכשאני מריצה את ה פרוצדורה עם השורה SELECT SCOPE_IDENTITY() as D_ID
              הוא מחזיר לי את העמודה הרלוונטית
              וכשאני מריצה עם השורה RETURN SCOPE_IDENTITY()
              הוא כותב שזה עבר ולא מחזיר לי ערך
              ב2 המקרים בקריאה דרך ויזואל סטודיו מחזיר את אותה השגיאה שצינתי לעיל
              תודה

              OdedDvirO תגובה 1 תגובה אחרונה
              0
              • ש מנותק
                ש מנותק
                שרה רחל
                כתב ב נערך לאחרונה על ידי
                #27

                @שרה-רחל אמר בsql server:

                ב2 המקרים בקריאה דרך ויזואל סטודיו מחזיר את אותה השגיאה שצינתי לעי

                סליחה
                דרך הSQL SERVER
                זה כן מחזיר לי ערכים
                השגיאה היא רק דרך VISUAL STUDIO

                OdedDvirO תגובה 1 תגובה אחרונה
                0
                • OdedDvirO מנותק
                  OdedDvirO מנותק
                  OdedDvir
                  השיב לשרה רחל ב נערך לאחרונה על ידי OdedDvir
                  #28

                  @שרה-רחל אמר בsql server:

                  השגיאה היא רק דרך VISUAL STUDIO

                  התחביר שאתם מריצים ב VS לא תקין.
                  תנסו את הקוד הבא:

                   public int InsertDoc( string docName, string autherName, string docPath, DateTime docDate)
                  {
                      using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("lib`")))
                      {
                          SqlCommand command = new SqlCommand("dbo.INSERT_DOC", connection);
                          command.Connection.Open();
                          command.CommandType = CommandType.StoredProcedure;
                          command.Parameters.AddWithValue("@docName", docName);
                          command.Parameters.AddWithValue("@autherName", autherName);
                          command.Parameters.AddWithValue("@docPath", docPath);
                          command.Parameters.AddWithValue("@docDate", docDate);
                          return Convert.ToInt32(command.ExecuteScalar());
                       }
                  }
                  
                  תגובה 1 תגובה אחרונה
                  2
                  • OdedDvirO מנותק
                    OdedDvirO מנותק
                    OdedDvir
                    השיב לשרה רחל ב נערך לאחרונה על ידי
                    #29

                    @שרה-רחל אמר בsql server:

                    וכשאני מריצה את ה פרוצדורה עם השורה SELECT SCOPE_IDENTITY() as D_ID
                    הוא מחזיר לי את העמודה הרלוונטית

                    תשאירו את הפרוצדורה המקורית בשימוש עם ExecuteScalar כנ"ל

                    תגובה 1 תגובה אחרונה
                    1

                    • 1
                    • 2
                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום