SQL存儲函數
回答
我假設你有一個交貨表和產品表。
create or replace function prod_delivered_cnt (p_prod_id in number) as
v_res number;
begin
select count(*) into v_res
from delivery_table d
where d.prod_id = p_prod_id
and d.date < to_date('2011', 'yyyy');
return v_res;
end prod_delivered_cnt;
select p.prod_num, p.prod_name, prod_delivered_cnt(p.id) as cnt
from product_table p;
你可以幫我多一點,請創建一個函數來檢索員工表的經理姓名。編寫一個SQL select語句,使用該函數生成員工編號和姓名列表以及他們的經理姓名 – user911534
對不起,先生,這將是一個新問題,我可能還會回答這個問題,一旦這個問題被正確關閉/接受。另外,請注意所有建議提供這些問題的更多細節的意見。我的意思是你應該提供表結構和數據庫供應商,如果你想得到一個包含工作代碼的答案。 – bpgergo
謝謝,我會把這個問題作爲新的。此外,我在這裏很新,並沒有太多的想法如何將ERD圖像放在這裏,你能幫我嗎,這將是高度appriciated – user911534
大概你的問題是由學校或大學作業提示的。至少我希望是這樣,因爲使用函數來達到這個目的是不好的做法。由於SQL和PL/SQL引擎之間的不斷切換,並且因爲它逐行查詢交付而不是使用set操作,所以它執行得很糟糕。
簡單的純SQL語句表現更好。我選擇使用外連接,因爲您可能希望包含去年沒有任何活動的產品。
select p.product_id
, p.product_name
, count(d.delivery_id) as sales_this_year
from products p
left outer join deliveries d
on (p.product_id = d.product_id)
where d.dispatch_date >= add_months(sysdate, -12)
group by p.product_id, p.product_name
/
我已經「在去年」解釋爲過去的十二個月內,因此使用了ADD_MONTHS()函數。一個不同的解釋將有一個這樣的WHERE子句:
where d.dispatch_date between to_date('01-JAN-2010') and to_date('31-DEC-2010')
也就是上一個日曆年;或者:
where d.dispatch_date >= trunc(sysdate, 'YYYY')
也就是這個日曆年。
- 1. 存儲的PL/SQL函數
- 2. MySQL存儲函數:CONTAINS SQL或NO SQL?
- 3. 存儲過程中的函數 - SQL 2008
- 4. 來自vb.net的SQL存儲函數
- 5. 存儲@property函數
- 6. MonetDB存儲()函數
- 7. TSQL存儲函數
- 8. mysql存儲函數參數
- 9. 使用SQL存儲函數給出了無效的SQL語句
- 10. 使用SQL函數將SQL Server存儲過程轉換爲LINQ
- 11. 如何從sql select語句中調用存儲過程或存儲函數
- 12. C#SQL Server數據存儲
- 13. SQL存儲動態數據
- 14. 存儲過程SQL計數
- 15. 如何使用存儲函數安全地檢索sql數據
- 16. 在GAE的數據存儲中使用類似SQL的函數
- 17. 如何調用pl/sql存儲過程(函數,返回數值)?
- 18. mySQL存儲函數問題
- 19. 存儲函數返回NULL
- 20. 存儲JavaScript函數chrome
- 21. 存儲函數的結果
- 22. 遞歸存儲函數
- 23. PHP:存儲由函數
- 24. 存儲過程和函數
- 25. Oracle存儲函數問題
- 26. 存儲函數模板
- 27. 存儲一個Lua函數?
- 28. LINQ to SQL存儲庫 - 緩存數據
- 29. 存儲在SQL
- 30. 存儲在SQL
SQL Server或Oracle?或兩者??另外:請**展示我們**您的餐桌結構,以便我們知道我們正在處理的事情! –
如果可能的話oracle,感謝您的快速回復 – user911534
你能否讓我知道我該如何在這裏添加表結構,對不起,我在這裏是相當新的 – user911534