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

نام تاپیک: استور پروسيجر

  1. #1

    استور پروسيجر

    با سلام
    من ميخوام يه نمونه استورپروسيجر با دستور case يا if بسازم مثلا اگه جاري كاركنان كه كدش 22 را انتخاب كرد يه سلكت اجرا بشه ولي اگه جاري مشتركين را كه كدش 23 است را انتخاب كرد همون سلكت جاري كاركنان اجرا بشه ولي با دو تا پارامتر اضافه تر چون توي سلكت دومي نام مدرسه و مشتري را هم ميخوام ولي تو سلكت اول و دوم جفتش نام راننده بايد باشه
    با تشكر فراوان

  2. #2
    کاربر دائمی آواتار mehdi_turbo
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    Half Of The World
    پست
    231

    نقل قول: استور پروسيجر

    دوست من اگه در book on line خود sql سرچ کنی هزار نمونه store procedure واست میاره

  3. #3

    نقل قول: استور پروسيجر

    نقل قول نوشته شده توسط mehdi_turbo مشاهده تاپیک
    دوست من اگه در book on line خود sql سرچ کنی هزار نمونه store procedure واست میاره
    با سلام
    ميشه اين آدرسي را كه گفتيد واضح تر بگيد منظورتون راهنماي اسكيوال است
    با تشكر

  4. #4

    نقل قول: استور پروسيجر

    سلام دوست عزيز
    الان مشكل شما سينتكس كاره يا اصلا نميدوني چيكار بايد كرد كمي بيشتر توضيح بده اگر مشكل سينتكس خوب help sql بهترين آموزه هارو داره اما سوالت كمي گنگه بيشتر توضيح بده لطفا
    موفق باشي

  5. #5
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: استور پروسيجر


  6. #6

    نقل قول: استور پروسيجر

    نقل قول نوشته شده توسط ozzy_mra مشاهده تاپیک
    با سلام و تشكر از راهنمايي شما
    دوست عزيز من با تريگر آشنايي اصلان ندارم ميشه يه نمونه‌هايي از ساده به سخت بهم نشون بدي
    با تشكر

  7. #7

    نقل قول: استور پروسيجر

    سلام.
    دوست عزيز اينجا نمونه هاي زيادي استور پروسيجر پيدا ميكني.
    در ضمن براي يادگيري sql هم تو همين سايت تايپ كن msdn و چيزي كه ميخواي را جستجو كن.
    http://social.msdn.microsoft.com/Sea...rocedures&ac=8

    موفق باشي

  8. #8

    نقل قول: استور پروسيجر

    نقل قول نوشته شده توسط M aJi D مشاهده تاپیک
    سلام.
    دوست عزيز اينجا نمونه هاي زيادي استور پروسيجر پيدا ميكني.
    در ضمن براي يادگيري sql هم تو همين سايت تايپ كن msdn و چيزي كه ميخواي را جستجو كن.
    http://social.msdn.microsoft.com/Sea...rocedures&ac=8

    موفق باشي
    با سلام
    اين كد ركورد تكراري را هم درج ميكنه اشكال كار كجاست

    ALTER PROCEDURE dbo.[1]
    (@name nvarchar(50) = NULL,
    @sal nvarchar(9),
    @school int=null,
    @driver int=null


    )
    AS

    if (@name is null and @school is not null and @driver is not null)
    begin
    INSERT INTO dbo.Tbl_pardakh
    (CustomerID, DriverID, scoolid, sal)

    SELECT dbo.Tbl_Customer.CustomerID, dbo.Tbl_Customer.DriverID, dbo.Tbl_Customer.ScoolID, dbo.Tbl_pardakh.sal
    FROM dbo.Tbl_Driver INNER JOIN
    dbo.Tbl_pardakh ON dbo.Tbl_Driver.DriverID = dbo.Tbl_pardakh.DriverID RIGHT OUTER JOIN
    dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
    dbo.Tbl_ScoolM INNER JOIN
    dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID

    WHERE (tbl_customer.scoolid=@school and tbl_customer.driverid=@driver)
    end

    با تشكر

  9. #9
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: استور پروسيجر

    نقل قول نوشته شده توسط s_mokhtari مشاهده تاپیک
    با سلام و تشكر از راهنمايي شما
    دوست عزيز من با تريگر آشنايي اصلان ندارم ميشه يه نمونه‌هايي از ساده به سخت بهم نشون بدي
    با تشكر
    سلام اینجا چند تا نمونه از ایجاد و استفاده از تریگرها گذاشتم البته با اجازه از استاد گرامی جناب مهندس ثباتی
    ---- TRIGGERS -----
    go

    create trigger tr1 on customers
    after insert
    as
    rollback tran
    go


    create trigger tr1 on customers
    after insert
    as
    print 'You cannot register any new customer!'
    rollback tran
    go

    insert Customers(CustomerID,CompanyName) values('a21','b2')
    go

    create trigger tr2 on orders
    after insert
    as
    select * from inserted
    rollback tran
    go

    insert Orders(CustomerID, OrderDate) values('vinet',GETDATE())
    go

    alter trigger tr2 on orders
    after insert
    as
    declare @cid char(5)
    select @cid=customerid from inserted
    if (select count(orderid) from orders where customerid=@cid)<=5
    rollback tran
    go

    alter trigger tr2 on orders
    after insert
    as
    if (select count(o.orderid) from inserted i join orders o
    on i.customerid=o.customerid)<=5
    rollback tran
    go


    insert Orders(CustomerID, OrderDate) values('alfki',GETDATE())
    insert Orders(CustomerID, OrderDate) values('anatr',GETDATE())

    select * from Orders
    order by CustomerID



    delete orders where OrderID=11081
    ---------------------------
    go
    create trigger tr3 on [order details]
    after insert
    as
    declare @pid int
    declare @pc int
    select @pid=productid, @pc=Quantity from inserted
    if (select UnitsInStock from products where productid=@pid)<@pc
    rollback tran
    go

    insert [Order Details] (OrderID,ProductID,Quantity) values(10248,1,39)





    go
    Alter trigger tr3 on [order details]
    After insert
    as
    If Not Exists (Select *
    From Inserted i Join dbo.Products p
    on i.ProductID = p.ProductID
    where i.Quantity <= p.UnitsInStock )
    Begin
    print 'mojodi dar Anbar kafi nist'
    Rollback
    end
    Go

    insert [Order Details] (OrderID,ProductID,Quantity) values(10249,1,9)

    ---------------------------------------
    go
    create trigger tr7 on customers2
    after delete
    as
    declare @cid nchar(5)
    select @cid=customerid from deleted
    if (select count(orderid) from orders where customerid=@cid)>5
    rollback tran

    g

    go
    alter trigger t2 on customers2
    after delete
    as
    if(select count(o.orderid) from orders o
    join deleted d on o.customerid=d.customerid) >5
    rollback tran
    go

    -----------------------------------
    go
    create trigger tr4 on customers
    instead of insert
    as

    select 1
    go

    insert Customers(CustomerID,CompanyName) values('a3','b3')

    select * from Customers


    alter trigger tr4 on customers
    instead of insert
    as
    insert customers select * from inserted
    go

    -----------

    alter trigger tr5 on [order details]
    instead of insert
    as
    declare @cnt int
    --declare @qnt int

    set @cnt = (select p.UnitsInStock from inserted i
    inner join products p
    on i.productid=p.productid)
    if @cnt < (select quantity from inserted)
    begin
    insert [Order Details] (ProductID,Orderid,Quantity) (select ProductID,orderid,@cnt from inserted)
    print 'meghdare mojodi insert shod'
    end
    else
    insert [Order Details] (ProductID,Orderid,Quantity) (select productid, orderid,quantity from inserted)
    go



    Create trigger tr3 on [order details]
    instead of insert
    as

    If Exists (Select *
    From Inserted i Join dbo.Products p
    on i.ProductID = p.ProductID
    where i.Quantity <= p.UnitsInStock )
    insert into [order details] select * from inserted
    else
    Begin
    insert into [order details]
    Select i.orderId,i.productid,i.unitprice,p.UnitsInStock ,i.discount
    from inserted i join products p
    on i.productid = p.productid

    -- print 'mojodi dar Anbar kafi nist'
    -- Rollback
    end

    --

    go
    Create trigger tr3 on [order details]
    instead of insert
    as

    insert [order details] Select i.orderId,i.productid,i.unitprice,
    case when i.quantity>p.unitsinstock then p.unitsinstock
    else i.quantity end ,i.discount
    from inserted i join products p
    on i.productid = p.productid


    insert [Order Details] (OrderID,ProductID,Quantity) values(10300,1,40)
    insert [Order Details] (OrderID,ProductID,Quantity) values(10301,1,4)

    select * from [order details]
    where orderid=10301

  10. #10

    نقل قول: استور پروسيجر

    نقل قول نوشته شده توسط ozzy_mra مشاهده تاپیک
    سلام اینجا چند تا نمونه از ایجاد و استفاده از تریگرها گذاشتم البته با اجازه از استاد گرامی جناب مهندس ثباتی
    ---- TRIGGERS -----
    go

    create trigger tr1 on customers
    after insert
    as
    rollback tran
    go


    create trigger tr1 on customers
    after insert
    as
    print 'You cannot register any new customer!'
    rollback tran
    go

    insert Customers(CustomerID,CompanyName) values('a21','b2')
    go

    create trigger tr2 on orders
    after insert
    as
    select * from inserted
    rollback tran
    go

    insert Orders(CustomerID, OrderDate) values('vinet',GETDATE())
    go

    alter trigger tr2 on orders
    after insert
    as
    declare @cid char(5)
    select @cid=customerid from inserted
    if (select count(orderid) from orders where customerid=@cid)<=5
    rollback tran
    go

    alter trigger tr2 on orders
    after insert
    as
    if (select count(o.orderid) from inserted i join orders o
    on i.customerid=o.customerid)<=5
    rollback tran
    go


    insert Orders(CustomerID, OrderDate) values('alfki',GETDATE())
    insert Orders(CustomerID, OrderDate) values('anatr',GETDATE())

    select * from Orders
    order by CustomerID



    delete orders where OrderID=11081
    ---------------------------
    go
    create trigger tr3 on [order details]
    after insert
    as
    declare @pid int
    declare @pc int
    select @pid=productid, @pc=Quantity from inserted
    if (select UnitsInStock from products where productid=@pid)<@pc
    rollback tran
    go

    insert [Order Details] (OrderID,ProductID,Quantity) values(10248,1,39)





    go
    Alter trigger tr3 on [order details]
    After insert
    as
    If Not Exists (Select *
    From Inserted i Join dbo.Products p
    on i.ProductID = p.ProductID
    where i.Quantity <= p.UnitsInStock )
    Begin
    print 'mojodi dar Anbar kafi nist'
    Rollback
    end
    Go

    insert [Order Details] (OrderID,ProductID,Quantity) values(10249,1,9)

    ---------------------------------------
    go
    create trigger tr7 on customers2
    after delete
    as
    declare @cid nchar(5)
    select @cid=customerid from deleted
    if (select count(orderid) from orders where customerid=@cid)>5
    rollback tran

    g

    go
    alter trigger t2 on customers2
    after delete
    as
    if(select count(o.orderid) from orders o
    join deleted d on o.customerid=d.customerid) >5
    rollback tran
    go

    -----------------------------------
    go
    create trigger tr4 on customers
    instead of insert
    as

    select 1
    go

    insert Customers(CustomerID,CompanyName) values('a3','b3')

    select * from Customers


    alter trigger tr4 on customers
    instead of insert
    as
    insert customers select * from inserted
    go

    -----------

    alter trigger tr5 on [order details]
    instead of insert
    as
    declare @cnt int
    --declare @qnt int

    set @cnt = (select p.UnitsInStock from inserted i
    inner join products p
    on i.productid=p.productid)
    if @cnt < (select quantity from inserted)
    begin
    insert [Order Details] (ProductID,Orderid,Quantity) (select ProductID,orderid,@cnt from inserted)
    print 'meghdare mojodi insert shod'
    end
    else
    insert [Order Details] (ProductID,Orderid,Quantity) (select productid, orderid,quantity from inserted)
    go



    Create trigger tr3 on [order details]
    instead of insert
    as

    If Exists (Select *
    From Inserted i Join dbo.Products p
    on i.ProductID = p.ProductID
    where i.Quantity <= p.UnitsInStock )
    insert into [order details] select * from inserted
    else
    Begin
    insert into [order details]
    Select i.orderId,i.productid,i.unitprice,p.UnitsInStock ,i.discount
    from inserted i join products p
    on i.productid = p.productid

    -- print 'mojodi dar Anbar kafi nist'
    -- Rollback
    end

    --

    go
    Create trigger tr3 on [order details]
    instead of insert
    as

    insert [order details] Select i.orderId,i.productid,i.unitprice,
    case when i.quantity>p.unitsinstock then p.unitsinstock
    else i.quantity end ,i.discount
    from inserted i join products p
    on i.productid = p.productid


    insert [Order Details] (OrderID,ProductID,Quantity) values(10300,1,40)
    insert [Order Details] (OrderID,ProductID,Quantity) values(10301,1,4)

    select * from [order details]
    where orderid=10301
    با سلام
    من يه ديتاگريد دارم ميخوام يه دفعه ستونهاشو درج كنم ولي از بين اين ركوردها ممكن چندتاش تو جدول پرداختم تكراري باشه حالا ميخوام تعداد سطر تكراري را يا تعداد ركوردي كه درج شده است را بعد از درج كردن نشونم بده چطوري
    خيلي عجله دارم
    if (@name is null and @school is not null and @driver is not null)
    begin
    INSERT INTO dbo.Tbl_pardakh
    (CustomerID, DriverID, scoolid, sal)

    SELECT dbo.Tbl_Customer.CustomerID, dbo.Tbl_Customer.DriverID, dbo.Tbl_Customer.ScoolID, dbo.Tbl_pardakh.sal
    FROM dbo.Tbl_Driver INNER JOIN
    dbo.Tbl_pardakh ON dbo.Tbl_Driver.DriverID = dbo.Tbl_pardakh.DriverID RIGHT OUTER JOIN
    dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
    dbo.Tbl_ScoolM INNER JOIN
    dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID

    WHERE (tbl_customer.scoolid=@school and tbl_customer.driverid=@driver)
    end
    اين هم تريگري كه نوشتم
    ALTER TRIGGER triger1
    on dbo.Tbl_pardakh
    after INSERT
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    declare @cid int

    select @cid=customerid from inserted
    if (select count(customerid) from tbl_pardakh where customerid =@cid) !=0
    raiserror('قبلا ثبت شده است',16,1)


    -- Insert statements for trigger here

    END
    ولي يك ركورد درج ميكنه فقط من ميخوام تمامشا درج كنه اگه تكراري بود پيغام بده

    با تشكر
    آخرین ویرایش به وسیله s_mokhtari : یک شنبه 02 خرداد 1389 در 12:57 عصر

  11. #11
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: استور پروسيجر

    از یه فانکشن تو sql استفاده کن و به عنوان پارامتر ورودی اون دستور select تتو که باهاش hnsert می کنی رو بهش پاس بده و دو تا پارامتر خروجی برای تعداد درج شده و تعداد تکراری در نظر بگیر
    تعداد درج شده رو از یه select count(*) روی کوئری select می تونی بدست بیاری یعنی به جای
    SELECT dbo.Tbl_Customer.CustomerID, dbo.Tbl_Customer.DriverID, dbo.Tbl_Customer.ScoolID, dbo.Tbl_pardakh.sal

    بنویس select count(*) و ادامه کوئری که تعداد درج شده رو نشون می ده برای تکراری ها هم بفرض می خواد با جدول dest چک کنه که تکراری چند تاس اینجوری استفاده کن :
    SELECT COUNT(dbo.Tbl_Customer.CustomerID)
    FROM dbo.Tbl_Driver INNER JOIN
    dbo.Tbl_pardakh ON dbo.Tbl_Driver.DriverID = dbo.Tbl_pardakh.DriverID RIGHT OUTER JOIN
    dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
    dbo.Tbl_ScoolM INNER JOIN
    dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID

    WHERE (tbl_customer.scoolid=@school and tbl_customer.driverid=@drive) and (dbo.Tbl_Customer.CustomerID in (SELECT dest.CustomerID from dest)

    فکر کنم جواب بده

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

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