내 스타일 블로그

SEARCH RESAULT : 글 검색 결과 - 프로그래밍 노트 (총 7개)

POST : 프로그래밍 노트

(PL/SQL) about function

오라클 프로그래밍에 대해서 아무것도 모르는 상태에서 뭔가 하려니까 참 답답하다.
구글링 하면서 어찌어찌 짜집기 해서 원하는 기능을 구현하긴 했지만 제대로 돌아가고 있는건지는 좀 더 지켜봐야 할 듯.

function 생성하는 문법
CREATE [OR REPLACE] FUNCTION function_name [parameters]
RETURN return_datatype;
IS
Declaration_section
BEGIN
Execution_section
Return return_variable;
EXCEPTION
exception section
Return return_variable;
END;


function과 procedure의 가장 큰 차이점은 return값의 유무이다.
  • function은 return값이 있어야 하지만 procedure는 return값이 없다.
물론 parameter도 가질 수 있다. 파라미터명은 30 characters 이하이어야 함!

parameter를 선언하면서 좀 아리송 했던 부분은 varchar2(8) 이런 형태는 안된다는 것이다.
처음에는 왜 에러가 나는지도 몰랐다. 그냥 varchar2라고만 선언해야 한다.

아래처럼 하면 파라미터에 디폴트값을 설정할 수 있다.

cp_id in number := 1

function을 호출할 때 파라미터를 넘기는 방법에는 두 가지가 있다.

fun_exists_data (cp_id in number, data_type in varchar2, date in varchar2)
라는 function을 호출하려면

-- 순서에 의한
fun_exists_data(1, 'G', '20091201')

또는
-- 이름에 의한
fun_exists_data(cp_id => 1, data_type => 'G', date => '20091201')

처럼 하면 된다.



'프로그래밍 노트' 카테고리의 다른 글

Javascript로 파일 읽기  (0) 2009.11.16
Commons Digester  (0) 2009.11.11
Oracle SQL 메모  (0) 2009.10.19
grep과 vi 를 하나로  (0) 2009.09.19
Axis2 codegen bug  (0) 2009.08.09
top

posted at

2009. 12. 2. 00:19


POST : 프로그래밍 노트

Javascript로 파일 읽기

XMLHttpRequest를 사용하면 브라우저의 종류에 상관없이 (URL로 접근 가능한)파일을 읽을 수 있다.

'프로그래밍 노트' 카테고리의 다른 글

(PL/SQL) about function  (0) 2009.12.02
Commons Digester  (0) 2009.11.11
Oracle SQL 메모  (0) 2009.10.19
grep과 vi 를 하나로  (0) 2009.09.19
Axis2 codegen bug  (0) 2009.08.09
top

posted at

2009. 11. 16. 19:17


POST : 프로그래밍 노트

Commons Digester

패턴이 일정하고 간단한 포맷을 가진 XML을 파싱할 일이 생겼는데
JAXP를 사용하려고 했지만 너무 복잡하다. 그래서 괜찮은 방법이 없을까 찾아 보다가

digester를 사용하면 xml파일을 아주 재밌게 파싱할 수 있다는걸 알았다.
xml을 읽어서 java beans에 매핑해준다.

http://wiki.apache.org/commons/Digester
http://wiki.apache.org/commons/Digester/FAQ

[xml]
<?xml version="1.0" encoding="UTF-8"?>
<list>
    <item>20091110</item>
    <item>20091109</item>
    <item>20091108</item>
    <item>20091107</item>
    <item>20091106</item>
    <item>20091105</item>
    <item>20091104</item>
</list>

[java source]
public static List<String> parseDateList(String xmlUrl) {

    URL url = null;
    try {
        url = new URL(xmlUrl);
    } catch (MalformedURLException e) {
        log.error(e, e);
    }

    Digester digester = new Digester();
    digester.setValidating(false);

    digester.addObjectCreate("list", ArrayList.class);
    digester.addCallMethod("list/item", "add", 1);
    digester.addCallParam("list/item", 0);

    List<String> dateList = null;
    try {
        dateList = (List<String>) digester.parse(url.openStream());
    } catch (IOException e) {
        log.error(e, e);
    } catch (SAXException e) {
        log.error(e, e);
    }

    return dateList;

}


'프로그래밍 노트' 카테고리의 다른 글

(PL/SQL) about function  (0) 2009.12.02
Javascript로 파일 읽기  (0) 2009.11.16
Oracle SQL 메모  (0) 2009.10.19
grep과 vi 를 하나로  (0) 2009.09.19
Axis2 codegen bug  (0) 2009.08.09
top

posted at

2009. 11. 11. 01:07


POST : 프로그래밍 노트

Oracle SQL 메모

다른 column의 값으로 update하기
news라는 테이블에 reg_dt, modi_dt, cp_news_dt라는 column이 있다.
여기서 reg_dt와 modi_dt의 값을 cp_news_dt의 값으로 update를 하고 싶다.

update news
set reg_dt = cp_news_dt, modi_dt = cp_news_dt
where news_id in (
  select news_id
  from news
  where news_id between 20091001000000000 and 20091005000000000 );

select된 result를 group으로 카운팅 하기
news_id는 20090914000000000 와 같은 형식이다. 앞자리 8개를 통해 news의 등록 날짜를 알 수 있다. 날짜별로 news의 갯수를 알고 싶을 때는

select substr(reg_dt,0,8) reg_date, count(news_id)
from news
where news_id between 20090914000000000 and 20090919240000000
group by substr(reg_dt,0,8)
order by reg_date;

에휴...sql이 난 왜케 어렵니 -.-

'프로그래밍 노트' 카테고리의 다른 글

Javascript로 파일 읽기  (0) 2009.11.16
Commons Digester  (0) 2009.11.11
grep과 vi 를 하나로  (0) 2009.09.19
Axis2 codegen bug  (0) 2009.08.09
Cruise Control + SVN  (1) 2009.08.09
top

posted at

2009. 10. 19. 18:58


POST : 프로그래밍 노트

grep과 vi 를 하나로

grep 으로 찾은 파일을 바로 vi에서 볼 수 있는 스크립트입니다.
많이 사용할 거 같아서 만들었는데
그 이후 일주일간 사용한적은 없습니다. ;(

손에 익어서 그런지 요즘 들어서 부쩍 사용하기 시작했습니다.

#!/bin/bash

if [ $# -ne 2 ]; then
    echo "Usage: gvi pattern file-extention"
    echo "eg: gvi CESC dat"
    exit 1
fi

files=`grep $1 *$2 | awk -F : '{print $1}' | uniq`
result_count=`grep $1 *$2 | awk -F : '{print $1}' | uniq | wc -l`

if [ $result_count -eq 0 ]; then
    echo 'no file mached'
    exit 0
fi

echo "list of files : $result_count"
echo $files | sed 's/ /\n/g'
echo -n "(q: quit, enter: open files with vi):"
read input

if [ $input = 'q' ]; then
    echo $input
    exit 0
fi

vi $files


'프로그래밍 노트' 카테고리의 다른 글

Javascript로 파일 읽기  (0) 2009.11.16
Commons Digester  (0) 2009.11.11
Oracle SQL 메모  (0) 2009.10.19
Axis2 codegen bug  (0) 2009.08.09
Cruise Control + SVN  (1) 2009.08.09
top

posted at

2009. 9. 19. 11:52


POST : 프로그래밍 노트

Axis2 codegen bug

wsdl2java는 wsdl을 호출할 수 있는 java코드를 생성해준다. wsdl2java는 Axis2에 포함되어 있다.
이 작업을 좀 더 편하게 해주는 eclipse plug-in이 있는데(사실 쉘에서 실행할 수 있는 스크립트 하나 만들어서 두고두고 사용하는게 편하다.)

http://svn.apache.org/repos/asf/webservices/axis2/site/tools/1_0/eclipse/wsdl2java-plugin.html

여기 나와 있는데로 하면 되어야 하지만
마지막 단계에서 아래와 같은 예외가 발생하면서 대락 난감!

java.lang.reflect.InvocationTargetException

구글링을 해보니 비슷한 삽질을 한 사람이 무척 많은데 아무튼 아래처럼 하니까 되더라.
  1. backport-util-concurrent-3.1.jar와 geronimo-stax-api_1.0_spec-1.0.1.jar
    $ECLIPSE_HOME\plugins\Axis2_Codegen_Wizard_1.3.0\lib에 복사한다.
    * $AXIS2_HOME\lib 안에 있음
  2. $ECLIPSE_HOME\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml 에 아래 내용을 추가

    <library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
        <export name="*"/>
    </library>
    <library name="lib/backport-util-concurrent-3.1.jar">
        <export name="*"/>
    </library>

  3. <plugin>엘리먼트의 version 속성을 1.3.0 에서 1.4.0 으로 수정
  4. plugin 폴더 이름도
    $ECLIPSE_HOME\plugins\Axis2_Codegen_Wizard_1.3.0
    에서
    $ECLIPSE_HOME\plugins\Axis2_Codegen_Wizard_1.4.0
    으로 수정
  5. Eclipse를 다시 실행!

나에게 도움을 준 웹페이지 : https://issues.apache.org/jira/browse/AXIS2-3792
테스트 환경 : Eclipse 3.4, Java 6, Axis2 1.4

'프로그래밍 노트' 카테고리의 다른 글

Javascript로 파일 읽기  (0) 2009.11.16
Commons Digester  (0) 2009.11.11
Oracle SQL 메모  (0) 2009.10.19
grep과 vi 를 하나로  (0) 2009.09.19
Cruise Control + SVN  (1) 2009.08.09
top

posted at

2009. 8. 9. 02:36


POST : 프로그래밍 노트

Cruise Control + SVN

문제
>> Cruise Control에서 Subversion을 사용하는 과정에서 아래 설정 부분이 제대로 동작하지 않음. 즉, 300초를 주기로 SVN으로부터 업데이트를 받고 mvn을 실행해야 하는데 SVN에서 소스를 아예 받아오지 않는다. 당연히 maven도 "the pom file could not be found..." 어쩌고 하는 로그만 남기고 실행이 안된다.

<schedule interval="300">
	<composite>
		<exec command="svn" args="up" workingdir="projects/${project.name}"/>
		<maven2 mvnhome="${maven.home}" pomfile="projects/${project.name}/pom.xml" goal="clean compile"/>
	</composite>
</schedule>
해결
>> 직접 $CC_HOME\projects에서 svn checkout을 수동으로 한번 해줘야 한다.

테스트
>> Java class파일을 하나 생성한 뒤 SVN에 commit을 하고 schedule이 실행되기를 기다리거나 admin page에서 직접 build 버튼을 클릭한다. 새롭게 commit한 파일이 $CC_HOME\projects에 있는지 확인



'프로그래밍 노트' 카테고리의 다른 글

Javascript로 파일 읽기  (0) 2009.11.16
Commons Digester  (0) 2009.11.11
Oracle SQL 메모  (0) 2009.10.19
grep과 vi 를 하나로  (0) 2009.09.19
Axis2 codegen bug  (0) 2009.08.09
top

posted at

2009. 8. 9. 02:25


CONTENTS

내 스타일 블로그
BLOG main image
익현이의 프로그래밍 노트^^
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크