نمایش نتایج 1 تا 2 از 2

نام تاپیک: خطا هنگام درج داده ها با استفاده از stored procedure

  1. #1
    کاربر تازه وارد آواتار Marzieh_A
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    خونمون
    پست
    87

    خطا هنگام درج داده ها با استفاده از stored procedure

    من وقتی می خوام رکوردی رو در جدولی که دارای Identity column هست درج کنم، نیاز به مقدار این Identity column داره.اگر این مقدار رو ندم error میده متغیر مربوط به ستون ID که در stored procedure مورد نظر با @ID مشخص شده پاس نشده. و اگر هم مقدار این فیلد رو بدم خطای زیر رو میده


    Explicit value must be specified for identity column in table 'Log_usr' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column.


    یه راه حل در نظر گرفتم که اول max آی دی هایی رو که تو حدول دارم بگیرم بعد به تابعی که برای insert کردن نوشتم پاس کنم اما error زیر رو میده


    Error converting data type varchar to bigint.


    البته باید بگم که تابع یا کلاسی که برای این بازیابی اطلاعات نوشتم(که max رو میگیره) به صورت زیر هستش


    public int User_Log_Count(int TypeSql)
    {

    SqlConnection MyConnection = new SqlConnection("Data Source=PC;Initial Catalog=nemoone;Integrated Security=True");
    SqlCommand cmd1 = new SqlCommand("SP_Log_usr", MyConnection);
    MyConnection.Open();
    cmd1.CommandType = CommandType.StoredProcedure;
    cmd1.Parameters.Add(new SqlParameter("@TypeSql", SqlDbType.SmallInt)).Value = TypeSql;
    cmd1.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = 1;
    return (cmd1.ExecuteNonQuery());
    MyConnection.Close();

    }


    و اون قسمت از stored procedure iم که این کار رو می کنه به صورت زیر هستش


    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go





    -- Create the stored procedure.

    ALTER PROCEDURE [dbo].[SP_Log_usr]
    @TypeSql smallint = 0 ,
    @ID bigint,
    @IdUser int = 0 ,
    @DateRunSql nvarchar(50) = null ,
    @Field_Value ntext = null ,
    @NameForm nvarchar(50) = null ,
    @NameTable nvarchar(50) = null ,
    @TyoeSql nvarchar(1) = null ,
    @SqlCommand ntext = null ,
    @Marhale smallint = 0

    AS
    BEGIN

    if @TypeSql=5
    begin
    declare @Max AS bigint ;
    set @Max=0;
    select @Max=MAx('ID') from Log_usr;
    return @Max;
    end
    return 0

    END


    اگر ممکنه بگید مشکل کارم کجاست چون واقعا هر کاری می کنم درست نمیشه

  2. #2
    کاربر دائمی آواتار hakelberfin
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    تبریز
    پست
    137

    نقل قول: خطا هنگام درج داده ها با استفاده از stored procedure

    سلام
    فیلدی که از نوع Identity تعریف شده ، باید توسط خود SQL مقدار دهی بشه. شما نمیتونین اونو مقداردهی کنین .
    نحوه تعریف Procedure شما هم اشتباهه.
    شما پارامتری از نوع Identity تعریف کردین که در حالت Insert در Procedure برای اون مقداری نمیدین.
    و زمانی که مقداری براش نمیدین ، خطا گرفته میشه.این پارامتر رو حذف کنین.
    سوال دیروز شما هم در این مورد بود .اگه به برنامه ای که گفته بودم خوب توجه میکردین متوجه میشدین.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •