company_o.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 145 行
ERL
145 行
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%% %% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See%% the License for the specific language governing rights and limitations%% under the License.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%% %% $Id$%%-module(company_o).-compile(export_all).-import(mnesia, [transaction/1]).%0-include_lib("stdlib/include/qlc.hrl").-include("company_o.hrl").sinit() -> mnesia:create_schema([node()]).init() -> mnesia:create_table(employee, [{attributes, record_info(fields, employee)}]), mnesia:create_table(dept, [{attributes, record_info(fields, dept)}]), mnesia:create_table(project, [{attributes, record_info(fields, project)}]).%0 %1insert_emp(Emp, DeptId, ProjNames) -> Fun = fun() -> mnesia:write(Emp#employee{dept = DeptId, projects = ProjNames}) end, mnesia:transaction(Fun).%1 %2females() -> F = fun() -> Q = qlc:q([E#employee.name || E <- mnesia:table(employee), E#employee.sex == female]), qlc:e(Q) end, mnesia:transaction(F).%2%3female_bosses() -> F = fun() -> qlc:e(qlc:q( [{E#employee.name, Boss#employee.name} || E <- mnesia:table(employee), Boss <- mnesia:table(employee), Boss#employee.emp_no == E#employee.manager, E#employee.sex == female] )) end, mnesia:transaction(F). %4raise_females(Amount) -> F = fun() -> Q = qlc:q([E || E <- mnesia:table(employee), E#employee.sex == female]), Fs = qlc:e(Q), over_write(Fs, Amount) end, mnesia:transaction(F).over_write([E|Tail], Amount) -> Salary = E#employee.salary + Amount, New = E#employee{salary = Salary}, mnesia:write(New), 1 + over_write(Tail, Amount);over_write([], _) -> 0.%4%5raise(Eno, Raise) -> F = fun() -> [E] = mnesia:read({employee, Eno}), Salary = E#employee.salary + Raise, New = E#employee{salary = Salary}, mnesia:write(New) end, mnesia:transaction(F).%5%6bad_raise(Eno, Raise) -> F = fun() -> [E] = mnesia:read({employee, Eno}), Salary = E#employee.salary + Raise, New = E#employee{salary = Salary}, io:format("Trying to write ... ~n", []), mnesia:write(New) end, mnesia:transaction(F).%6 %9get_emps(Salary, Dep) -> Q = qlc:q( [E || E <- mnesia:table(employee), E#employee.salary > Salary, E#employee.dept == Dep] ), F = fun() -> qlc:e(Q) end, transaction(F).%9%10get_emps2(Salary, Dep) -> Epat0 = mnesia:table_info(employee, wild_pattern), Epat = Epat0#employee{dept = Dep}, F = fun() -> All = mnesia:match_object(Epat), [E || E <-All, E#employee.salary > Salary ] end, mnesia:transaction(F). %10
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?