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 + -
显示快捷键?