database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
ㆍCache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Cache Q&A 384 게시물 읽기
No. 384
[COS] 코드에서 시스템 명령 호출하기
작성자
POSTRDB
작성일
2009-03-30 14:06
조회수
3,665

가끔 코딩 중에 시스템 명령을 호출하고 싶은 경우가 있습니다. 
Cache 터미널에서는 ! 를 이용하면 시스템 명령을 할 수 가 있지요. 가령, 
> ! dir
<..디렉터리 목록이 보임>

하지만, SQL Trigger 같은 코드에서는 ! 시스템 명령 호출을 사용할 수가 없습니다. 이럴 때는 $ZF(-1) 명령을 이용하면 됩니다. 
이 명령은 OS 플랫폼에 따라 조금씩 다릅니다. 
Windows and UNIX:
$ZF(-1,progname)

OpenVMS:
$ZF(-1,progname,outdev,indev)

가령, 운영체제 윈도우에서 사용하는 예제는 아래를 참고하시기 바랍니다.

Class User.TriggerSample Extends %Persistent {
 Property Name As %String;

 Trigger UpdateTrigger [ Event = UPDATE ]
{
   do $ZF(-1,"C:\MyTest.bat")
}

}

이 글에 대한 댓글이 총 1건 있습니다.
아래 예제도 참고하시길. 보다 다이내믹한 시스템 명령 호출이 가능합니다.

Trigger
BeforeUpdateTrigger [ Event = UPDATE, Time = BEFORE ]
{
// get row id of updated row
set NAME={ID}_{NAME}
do $ZF(-1,"c:\temp\a.bat "_NAME)
}

아래에는, 위 예제에서 사용된 a.bat 파일의 내용 예제입니다.
------------------C:\temp\a.bat 파일 내용------------
type c:\temp\a.bat >c:\temp\"%1".txt
mkdir c:\temp\test"%1"


*사용 방법
클래스를 컴파일 한 후, SQL 구문을 이용해 해당 필드에 insert한 후 다음과 같은 update 문을 수행해 봅니다. 

update TriggerSample set Name='Karl Bae'

성공적으로 수행되었다면, C:\temp 에 <해당 id>_.txt 이름의 파일과 test<해당 id> 이름의 디렉터리가 생성되었을 것입니다. 

열공맨님이 2009-03-30 14:53에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
387[Ensemble] 프로덕션 내보내기
앙상블
2009-03-30
3590
386[Ensemble]TCP 어댑터 설정
앙상블
2009-03-30
3997
385[설치] Cache ODBC 레지스트리 등록하기
POSTRDB
2009-03-30
5818
384[COS] 코드에서 시스템 명령 호출하기 [1]
POSTRDB
2009-03-30
3665
383[COS]유니코드 문자 2바이트로 계산하기
POSTRDB
2009-03-30
4040
382[SQL,COS] CEIL 함수 만들기 [1]
POSTRDB
2009-03-30
4675
381[설치] RedHat에서 Shared Memory 늘리기
POSTRDBCOKR
2009-03-26
4794
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.071초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다