sql用法

case 用法:

SELECT ORDER_ID, EXTERNAL_SOURCE_REF, (case when FIXED_CCY_CD = BASE_CCY_CD then NON_BASE_CCY_CD else BASE_CCY_CD end) as COUNTERCURRENCYID, ORDER_STATE_ID,FIXING_DTS, TO_CHAR(FIXING_DTS, 'DD-MM-YYYY'),TO_CHAR(FIXING_DTS, 'HH24:MI'), (case when BANK_BUYS_FIXED_FG='Y' then 'S' else 'B' end) as SIDE, COMMENT_1_TXT from atable where ...


sql function (SELECT * from table( PKG_Name.FN_SPLIT('a,b,c',',') ) where column_value='a'):
FUNCTION FN_SPLIT (P_SOURCE_STR IN VARCHAR2, P_DELIMITER IN VARCHAR2)
RETURN LIST_STR PIPELINED
IS
TARGER_LOCATION INT := 0;
START_LOCATION INT := 1;
SOURCE_LENGTH INT := 0;
DELIMITER_LENGTH INT := 0;
RESULT_STR VARCHAR2 (4000);
BEGIN
SOURCE_LENGTH := LENGTH (P_SOURCE_STR);
DELIMITER_LENGTH := LENGTH (P_DELIMITER);
WHILE TARGER_LOCATION < SOURCE_LENGTH
LOOP
TARGER_LOCATION := INSTR (P_SOURCE_STR, P_DELIMITER, START_LOCATION);
IF TARGER_LOCATION = 0
THEN
TARGER_LOCATION := SOURCE_LENGTH;
RESULT_STR := SUBSTR (P_SOURCE_STR, START_LOCATION);
PIPE ROW (RESULT_STR);
IF START_LOCATION >= SOURCE_LENGTH
THEN
EXIT;
END IF;
ELSE
RESULT_STR := SUBSTR (P_SOURCE_STR, START_LOCATION, TARGER_LOCATION - START_LOCATION);
START_LOCATION := TARGER_LOCATION + DELIMITER_LENGTH;
PIPE ROW (RESULT_STR);
END IF;
END LOOP;
RETURN;
END FN_SPLIT;


PROCEDURE DeleteCounterparty(
P_REGION IN VARCHAR2
)
AS
PCONUT_STR VARCHAR2(4000);
PERROR_STR VARCHAR2(4000);
BEGIN
PERROR_STR := '';

SELECT listagg(column_value, ',' ) within GROUP (ORDER BY column_value) AS REGION INTO PCONUT_STR FROM TABLE(FN_SPLIT(P_REGION,','))
WHERE column_value NOT IN
(SELECT a.region FROM
(SELECT SOURCE_REGION || '|' || TARGET_REGION AS region FROM COUNTERPARTY_MAPPING) a);

IF (NVL(length(PCONUT_STR),0) > 0) THEN
PERROR_STR := PERROR_STR || 'Unsupported Operation: Risk Routing Counterparty Code(s) '''||PCONUT_STR||''' not existed. ';
END IF;

IF(NVL(length(PERROR_STR),0) > 0) THEN
RAISE_APPLICATION_ERROR (-20001, PERROR_STR);
ELSE
DELETE FROM COUNTERPARTY_MAPPING where SOURCE_REGION || '|' || TARGET_REGION in (SELECT column_value FROM TABLE(FN_SPLIT(P_REGION,',')));
END IF;
END DeleteCounterparty;

PROCEDURE AddBroker(
P_INTERNAL_GROUP IN VARCHAR2,
P_EXTERNAL_GROUP IN VARCHAR2,
P_CLIENT_BROKER IN VARCHAR2,
P_POSITION_BROKER IN VARCHAR2,
P_USER IN VARCHAR2
)
AS
PCONUT NUMBER;
PERROR_STR VARCHAR2(4000);

BEGIN
PERROR_STR := '';
SELECT COUNT(*) INTO PCONUT FROM BROKER_MAPPING WHERE INTERNAL_GROUP=P_INTERNAL_GROUP and EXTERNAL_GROUP=P_EXTERNAL_GROUP;
IF (PCONUT>0) THEN
RAISE_APPLICATION_ERROR (-20001, 'Unique Constraint: Internal Trader Broker Mapping '''||P_INTERNAL_GROUP||''' and External Trader Broker Mapping '''||P_EXTERNAL_GROUP|| ''' already existed.');
ELSE
SELECT COUNT(*) INTO PCONUT FROM GROUP_MAPPING WHERE GROUP_ID=P_INTERNAL_GROUP;
IF (PCONUT=0) THEN
PERROR_STR := PERROR_STR || 'Unsupported Operation: Trader Group(s) '''||P_INTERNAL_GROUP||'''';
END IF;

SELECT COUNT(*) INTO PCONUT FROM GROUP_MAPPING WHERE GROUP_ID=P_EXTERNAL_GROUP;
IF (PCONUT=0) THEN
IF (NVL(length(PERROR_STR),0) > 0) THEN
PERROR_STR := PERROR_STR || ' and ''' || P_EXTERNAL_GROUP ||''' both do not exist in Risk Trader Group Mapping.';
ELSE
PERROR_STR := PERROR_STR || 'Unsupported Operation: Trader Group(s) '''||P_EXTERNAL_GROUP||''' does not exist in Risk Trader Group Mapping.';
END IF;
ELSE
IF (NVL(length(PERROR_STR),0) > 0) THEN
PERROR_STR := PERROR_STR || ' does not exist in Risk Trader Group Mapping.';
END IF;
END IF;

IF (NVL(length(PERROR_STR),0) > 0) THEN
RAISE_APPLICATION_ERROR (-20001, PERROR_STR);
ELSE
INSERT INTO BROKER_MAPPING(INTERNAL_GROUP,EXTERNAL_GROUP,CLIENT_BROKER,POSITION_BROKER,CREATED_BY,CREATED_DT,MODIFIED_BY,MODIFIED_DT)
VALUES(P_INTERNAL_GROUP,P_EXTERNAL_GROUP,P_CLIENT_BROKER,P_POSITION_BROKER,P_USER,CURRENT_DATE,P_USER,CURRENT_DATE);
END IF;
END IF;
END AddBroker;

PROCEDURE DeleteGroupInfo(
P_GROUP IN VARCHAR2
)
AS
PCONUT_STR VARCHAR2(4000);
PERROR_STR VARCHAR2(4000);
BEGIN
PERROR_STR := '';

SELECT listagg(column_value, ',' ) within group (order by column_value) as GROUP_ID INTO PCONUT_STR FROM TABLE(FN_SPLIT(P_GROUP,','))
where column_value not in (
SELECT distinct GROUP_ID from GROUP_MAPPING
WHERE GROUP_ID in (SELECT * FROM TABLE(FN_SPLIT(P_GROUP,',')))
);

IF (NVL(length(PCONUT_STR),0) > 0) THEN
PERROR_STR := PERROR_STR || 'Unsupported Operation: Risk Trader Group Code '''||PCONUT_STR||''' not existed. ';
END IF;

SELECT listagg(GROUP_ID, ',' ) within group (order by GROUP_ID) as GROUP_ID INTO PCONUT_STR from GROUP_MAPPING
WHERE GROUP_ID in (
select distinct INTERNAL_GROUP from BROKER_MAPPING WHERE INTERNAL_GROUP in (SELECT * FROM TABLE(FN_SPLIT(P_GROUP,',')))
union
select distinct EXTERNAL_GROUP from BROKER_MAPPING WHERE EXTERNAL_GROUP in (SELECT * FROM TABLE(FN_SPLIT(P_GROUP,',')))
);

IF (NVL(length(PCONUT_STR),0) > 0) THEN
PERROR_STR := PERROR_STR || 'Constraint Error: '''||PCONUT_STR||''' has been referred by Broker Mapping';
END IF;

IF(NVL(length(PERROR_STR),0) > 0) THEN
RAISE_APPLICATION_ERROR (-20001, PERROR_STR);
ELSE
DELETE FROM GROUP_MAPPING WHERE GROUP_ID in (SELECT * FROM TABLE(FN_SPLIT(P_GROUP,',')));
END IF;


END DeleteGroupInfo;


public Map<String, Object> executeNotCloseConn(AbstractCallableStatement procedure,Connection conn)
throws SQLException {
if(procedure == null) {
throw new SQLException("StoredProcedure is null.");
}
CallableStatement cs = null;
Map<String, Object> returnedResults = null;
try {
cs = conn.prepareCall(procedure.getCallString());
CallableStatement csToUse = this.prepareCallableStatement(cs, procedure.getDeclaredParameters());
csToUse.execute();
returnedResults = extractOutputParameters(csToUse, procedure.getDeclaredParameters());
} catch (SQLException e) {
this.rethrow(e, procedure.getCallString(), procedure.getDeclaredParameters());
}finally {
DBUtils.closeQuietly(cs);
}
return returnedResults;
}

public abstract class DatabaseAccessSupport {

private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseAccessSupport.class);

private DataSourceFactory dataSourceFactory;

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

public JdbcTemplate getJdbcTemplate(){
if (jdbcTemplate == null) {
jdbcTemplate = new JdbcTemplate(dataSourceFactory.getDataSource());
LOGGER.trace("JdbcTemplate set to [{}]", jdbcTemplate);
}

return jdbcTemplate;
}

public void setDataSourceFactory(final DataSourceFactory dataSourceFactory) {
this.dataSourceFactory = dataSourceFactory;
}
}

/**
* @param tradeIds
* @return Map<TRADE_ID, FIXML_TEXT>
*/
public Map<String, String> findAllFIXML(final Collection<String> tradeIds) {

if (tradeIds.isEmpty()) {
return new HashMap<String, String>();
}

NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(super.getJdbcTemplate());

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", tradeIds);

try {
return jdbcTemplate.query(QUERY_FIXML_SQL, parameters, new ResultSetExtractor<Map<String, String>>() {
@Override
public Map<String, String> extractData(ResultSet rs) throws SQLException, DataAccessException {
Map<String, String> idMap = new HashMap<String, String>();
while (rs.next()) {
idMap.put(rs.getString(1), rs.getString(2));
}
return idMap;
}
});
} catch (Exception e) {
throw new OMSDBConnectionException(e);
}
}


exp rpadba/rpadba@${host} file=E:\FXAG_DB_Dump\rpadba.dump owner=('RPADBA') log=E:\FXAG_DB_Dump\rpadba.log 

imp rpadba/rpadba@${host} file=E:\FXAG_DB_Dump\rpadba.dump log=E:\FXAG_DB_Dump\rpadba_imp.log fromuser=RPADBA touser=RPADBA


GRANT CONNECT TO $schema;
GRANT CREATE VIEW TO $schema;
GRANT DEBUG ANY PROCEDURE TO $schema;
GRANT DEBUG CONNECT SESSION TO $schema;
GRANT RESOURCE TO $schema;
GRANT UNLIMITED TABLESPACE TO $schema;

TNS_ADMIN:
C:\app\

export GTH DB:
exp gthdba/gthdba@${host} file=c:\FXAG_DB_Dump\rpadba.dump owner=('RPADBA') log=E:\FXAG_DB_Dump\rpadba.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值