Как сделать регистр на основе параметра метода? - PullRequest
0 голосов
/ 30 января 2019

Я хочу сделать оператор case, как в этом запросе:

@Query(nativeQuery = true, value = "select CASE " + 
            " WHEN TYP_0=1 THEN ACC_0" + 
            " WHEN TYP_0=2 THEN ACC_3" + 
            " WHEN TYP_0=3 THEN ACC_2" + 
            " END  FROM  tomx3v6.TOMCTB.GACCCODE  WHERE ACCCOD_0 IN (SELECT [ACCCOD_0] FROM [tomx3v6].[TOMCTB].[ITMMASTER] WHERE YITMOXA_0=?1) AND COA_0='PCG'")
    public String getPCGvalue(String linpurtyp, String code);

Но вместо того, чтобы основывать регистр на столбце базы данных TYP_0 Я хочу сделать оператор case таким, чтобына основе параметра метода linpurtyp.Как это сделать?

1 Ответ

0 голосов
/ 31 января 2019

Попробуйте:

@Query(nativeQuery = true, value = "select CASE " + 
            " WHEN ?1=1 THEN ACC_0" + 
            " WHEN ?1=2 THEN ACC_3" + 
            " WHEN ?1=3 THEN ACC_2" + 
            " END  FROM  tomx3v6.TOMCTB.GACCCODE  WHERE ACCCOD_0 IN (SELECT [ACCCOD_0] FROM [tomx3v6].[TOMCTB].[ITMMASTER] WHERE YITMOXA_0=?1) AND COA_0='PCG'")
    public String getPCGvalue(String linpurtyp, String code);

В качестве альтернативы используйте именованные параметры

@Query(nativeQuery = true, value = "select CASE " + 
            " WHEN :linpurtyp=1 THEN ACC_0" + 
            " WHEN :linpurtyp=2 THEN ACC_3" + 
            " WHEN :linpurtyp=3 THEN ACC_2" + 
            " END  FROM  tomx3v6.TOMCTB.GACCCODE  WHERE ACCCOD_0 IN (SELECT [ACCCOD_0] FROM [tomx3v6].[TOMCTB].[ITMMASTER] WHERE YITMOXA_0=:linpurtyp) AND COA_0='PCG'")
    public String getPCGvalue(@Param("linpurtyp") String linpurtyp, @Param("code") String code);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...