如前所述,沒有辦法從沒有SELECT的表中獲取數據,數據庫服務器可以爲您計算總和,因此您不必檢索客戶端中的所有值並執行那裏的總和,但不管怎麼樣,你仍然必須做一個SELECT
現在誰做的SELECT是另一回事,你可以編寫一個簡單的函數或者spl來爲你運行SELECT並返回值想。從技術上講(從應用程序的角度來看)你並沒有做'SELECT ....'語句,你正在執行'執行程序',並且在服務器中完成SELECT操作。
例如:
D:\infx\ids12>dbaccess stores7 -
Database selected.
> create table test (emp char(20),dept char(20), salary int);
Table created.
> insert into test values ('emp1','IT',3800);
1 row(s) inserted.
> insert into test values ('emp2','IT',4000);
1 row(s) inserted.
> insert into test values ('emp3','Marketing',3900);
1 row(s) inserted.
> insert into test values ('emp4','Marketing',3500);
1 row(s) inserted.
> insert into test values ('emp5','Operation',4000);
1 row(s) inserted.
>
假設這是你所追求的:
> select dept,sum(salary) from test group by dept;
dept (sum)
Operation 4000
IT 7800
Marketing 7400
3 row(s) retrieved.
>
,你可以這樣做:
> create procedure get_salaries(vdept char(20)) returning int;
> return (select sum(salary) from test where dept matches vdept);
> end procedure;
Routine created.
> execute procedure get_salaries('IT');
(expression)
7800
1 row(s) retrieved.
> execute procedure get_salaries('Operation');
(expression)
4000
1 row(s) retrieved.
> execute procedure get_salaries('Marketing');
(expression)
7400
1 row(s) retrieved.
> execute procedure get_salaries('*');
(expression)
19200
1 row(s) retrieved.
>
你可以告訴你的上司,你是不是做一個SELECT,只是運行SPL,SPL通過魔法計算總和值;)
由於SQL數據庫通常不具有內部順序,因此數據尚未按順序排列。不,你需要查詢來提取信息。 –
謝謝。這是我第一次。有沒有可能不使用select語句? –
你需要這種確切的格式嗎?如果你只是想要這些信息,那麼做一個「GROUP BY」聚合很容易。 –