CREATE PROCEDURE prc_ManagerTotalSales @managerID INT,
@beginDate DATE,
@endDate DATE,
@group VARCHAR(15) = 'total'
AS
BEGIN
SELECT
FirstName + ' ' + e.LastName AS Name,
COALESCE(SUM(od.UnitPrice * od.Quantity), 0) AS TotalSales
FROM
dbo.Employees e
LEFT OUTER JOIN dbo.Orders o ON e.EmployeeID = o.EmployeeID
LEFT OUTER JOIN dbo.[Order Details] od ON o.OrderID = od.OrderID
WHERE
(e.EmployeeID = @managerID OR e.ReportsTo = @managerID)
AND o.OrderDate >= @beginDate
AND o.OrderDate <= @endDate
GROUP BY
e.FirstName,
e.LastName
END
}
当调用方法getByShortCut时:getByShortCut(&#34; CS&#34;)我不断收到错误:&#34;没有枚举常量ProgramOfStudy.CS&#34;我在这做错了什么?
答案 0 :(得分:-1)
如果你需要另一个选项,你可以搞定地图,那么
public class StackOverF {
public static void main(String[] args) {
System.out.println("Hello World1");
System.out.println(ProgramOfStudy.getByShortCut("CS"));
System.out.println(ProgramOfStudy.getByShortCut("CSI"));
}
}
public enum ProgramOfStudy {
ComputerScience("CS"), AutomotiveComputerScience("ACS"), BusinessInformatics("BI");
public final String shortCut;
ProgramOfStudy(String shortCut) {
this.shortCut = shortCut;
}
public static ProgramOfStudy getByShortCut(String shortCut) {
return Arrays.stream(ProgramOfStudy.values())
.filter(v -> v.shortCut.equals(shortCut))
.findFirst()
.orElse(null);
}
}
答案 1 :(得分:-2)
为什么不在这个问题上应用一点Java 8,而不是在复杂的平等条件下进行循环和纠结?
public enum ProgramOfStudy {
ComputerScience("CS"), AutomotiveComputerScience("ACS"), BusinessInformatics("BI");
public final String shortCut;
private static final Map<String, ProgramOfStudy> shortCutMap = Collections.unmodifiableMap(new HashMap<>() {
{
Arrays.stream(ProgramOfStudy.values()).forEach(v -> put(v.shortCut, v));
}
});
ProgramOfStudy(String shortCut) {
this.shortCut = shortCut;
}
public static ProgramOfStudy getByShortCut(String shortCut) {
return shortCutMap.get(shortCut);
}
}
public static void main(String[] args) {
System.out.println(ProgramOfStudy.getByShortCut("CS"));
System.out.println(ProgramOfStudy.getByShortCut("ACS"));
System.out.println(ProgramOfStudy.getByShortCut("baasda"));
System.out.println(ProgramOfStudy.getByShortCut("BI"));
}
如果您运行此代码段,则会打印:
ComputerScience
AutomotiveComputerScience
null
BusinessInformatics
在这种情况下,最好使用映射而不是使用字符串比较的循环。在这种情况下初始化时只有一个循环,然后再也没有。在getByShortCut
方法的每个查询中都有一个带字符串比较的循环不是一个好主意。