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

نام تاپیک: اين پروسيجر درسته ؟‌

  1. #1
    کاربر دائمی آواتار majidmir
    تاریخ عضویت
    اردیبهشت 1387
    سن
    34
    پست
    199

    Question اين پروسيجر درسته ؟‌

    سلام
    اين پروسيجر رو واسه صدور صورتحساب كالا نوشتم

    1-ايا درسته؟
    CREATE PROCEDURE M_K_Kharid_INSERT
    @cod as int,
    @codkala as int,
    @codmoshtari as int ,
    @noaekharid as nchar(10),
    @takhfif as money,
    @date1 as datetime,
    @tedad as int
    AS
    declare @price as money
    /* جهت جلوگيري از ورود مقادير تكراري */
    if (select count(*) from kharidmoshtari where (cod=@cod and @codkala=codkala and @codmoshtari=codmoshtari and @noaekharid=noaekharid and @takhfif=takhfif and @date1=date1 and tedad=@tedad))=0
    begin

    -- شرط جهت انتخاب به تعداد موجودي
    if (SELECT count(*) FROM kala where(tedad >=@tedad ))>0
    begin

    insert into kharidmoshtari (cod,codkala,codmoshtari,noaekharid,takhfif,date1, tedad,price1)

    select @cod,@codkala,@codmoshtari,@noaekharid,@takhfif, @date1,@tedad, sum(kala.ghamatfo*kharidmoshtari.tedad) as price
    from kala
    join kharidmoshtari
    on kala.cod=kharidmoshtari.codkala
    group by kharidmoshtari.tedad, kala.ghamatfo, kharidmoshtari.cod
    --به تعداد خريد از موجودي كالا كسر ميشود
    update tedad set tedad=tedad-@tedad
    where cod=@cod

    return 1
    end
    end
    else
    return 0
    GO

    2-چطوري بايد توي Query Analyzer اونو اجرا كنم و مقدار بدم ؟ اينو نوشتم اشتباه در مياد
    M_K_Kharid_INSERT 100,5,13,1,2,2009,50

    و تنها ارگوماني رو كه ارسال نميكنم price هست كه اونو بايد خود روسيجر محاسبه كنه

  2. #2

    نقل قول: اين پروسيجر درسته ؟‌

    سلام،
    راجب سوال اول، منظورتون از صحت sp چیه از نظر منطقی یا syntax ای؟
    راجب سوال دوم، برای اجرا کردن یک SP نیاز هست از عبارت EXECUTE یا بطور خلاصه EXEC استفاده شود یعنی:
    EXECUTE M_K_Kharid_INSERT 100,5,13,1,2,2009,50
    وبلاگ من (Advanced SQL Querying)

  3. #3
    کاربر دائمی آواتار majidmir
    تاریخ عضویت
    اردیبهشت 1387
    سن
    34
    پست
    199

    نقل قول: اين پروسيجر درسته ؟‌

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    سلام،
    راجب سوال اول، منظورتون از صحت sp چیه از نظر منطقی یا syntax ای؟
    راجب سوال دوم، برای اجرا کردن یک SP نیاز هست از عبارت EXECUTE یا بطور خلاصه EXEC استفاده شود یعنی:
    EXECUTE M_K_Kharid_INSERT 100,5,13,1,2,2009,50
    سوال اول : از نظر منطقي منظورمه syntax مشكلي نداره
    سوال دوم : مشكل از Exec نيست ! موقعي كه از يه Sp استفاده ميكني نيازي به نوشتم exec نيست در ضمن با exec هم خطا ميده كه ارگومان ها درست نيستن ! طبق sp كه نوشتم به price گير ميده يا شايد هم به تاريخ

  4. #4

    نقل قول: اين پروسيجر درسته ؟‌

    اجرای یک SP بدون کمک گرفتن از EXEC امکان پذیر نیست (در Analyzer)
    پارامتری با نام Date1 تعریف کردین که از نوع Datetime هست ولی موقع پاس دادن مقادیر به پروسیجر نوع داده ی مناسبی را انتخاب نکردین.
    EXECUTE M_K_Kharid_INSERT 100,5,13,1,2,2009,50
    باید تبدیل بشه به چیزی شبیه به این:
    EXECUTE M_K_Kharid_INSERT 100,5,13,1,2,1/1/2009,50

    برای متوجه شدن درستی یا نادرسی رویه بایستی امتحانش کرد.
    وبلاگ من (Advanced SQL Querying)

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

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