프로그래밍.../Smarty | Posted by 고기킬러 2009. 12. 23. 10:03

Smarty 시작하기

SMARTY QUICKSTART GUIDE (Smarty 빠르게 시작하기)
------------------------------------------------

Smarty QuickStart Guide(Smarty 빠르게 시작하기)에 오신 것을 환영해요~ 이 가이드는
Smarty에 처음 발을 적시는 당신에게 Smarty가 어떻게 동작하는지 안내해 줄 거랍니다.

우리는 여기서 몇 가지 가정을 해볼 생각인데요. 당신이 이미 웹 서버에 PHP를 어떻게 설
치해야 하는지라던가, Unix 파일 퍼미션들에 대한 기초지식이나 그리고 PHP가 어떻게 동작
한다든지 등에 대한 기초지식을 가지고 있어야 하겠지요. 만약 당신이 Unix 환경이 아닌
곳에서 Smarty를 사용하고 있다면 당신은 자신의 OS와 관련된 파일 파미션 시스템이 Unix
와 어떤 차이점을 가지고 있는지 알고 있을 필요가 있답니다.

출처 : PHP SCHOOL
역자 : 조한석 님 <sizer@systong.co.kr>
프로그래밍.../PostgreSQL | Posted by 고기킬러 2009. 12. 22. 15:38

PL/pgSQL이란?

  • PL/pgSQL이란? 

 Postgres 6.3 버젼 부터 PostgreSQL은 Procedural Language(PL)를 지원하기 시작했다. 이것은 PostgreSQL만의 특별한 경우로서 oracle 의 PL/SQL과 비유될 수 있는 기능으로 다음의 특징 혹은 기능을 가지고 있다.

1. PL/pgSQL 은 function 이나 trigger procedure 를 만드는데 사용되어 질 수 있다.
2. SQL 문에 제어 구조를 추가할 수 있다.
3. 복잡한 계산을 구현할 수 있다.
4. user가 정의한 Type, Function, Operation을 상속할 수 있다.
5. 사용하기 쉽다.
6. PL/PythonPL/TCL과 같은 프로시져 언어를 지원한다.

 여섯 번째의  PL/Python과 PL/TCL은 각각 Python이라는 언어와 TCL이라는 언어를 사용하여 프로시져 함수를 사용할 수 있는 언어로 PL/Python과 PL/TCL에 대해서 더 자세히 알고 싶다면 PostgreSQL 사이트의 도규멘테이션을 살펴보길 바란다. 여기에서는 PL/pgSQL에 국한해서 설명하겠당.

PL/pgSQL는 블록 지향 언어이다. 블록는 다음처럼 사용된다.

[ Label ]
[ DECLARE declarations ]
BEGIN
      statements
END;

위의 형태가 가장 기초되는 형태이며 이 statements안에는 또 다른 서브 블록이 들어 올 수 있으면 이 서브 블록안의 변수는 들은 외부 블록으로부터 숨기기 위해 사용될 수 있다. 즉 외부에서는 서브 블록 내의 변수를 알 수가 없다. 이를 설명하기 전에 먼저 변수의 선언에 대해서 알아보자.

  • 변수 선언

PL/pgSQL에서의 변수 선언은 'DECLARE' 부분에서 선언되고 초기화되는데 그 초기값을 줄 수 있고, 해당 블럭을 진입할 때마다 초기화 된다. 다음은 변수 선언의 예이다.

CREATE FUNCTION func() RETURNS INTEGER AS '
DECLARE
   quantity INTEGER := 30;
BEGIN
   RAISE NOTICE ''Quantity here is %'',quantity;  -- quantity = 30
   quantity := 50;
   --
   -- 하위-블럭의 생성
   --
   DECLARE
      quantity INTEGER := 80;
   BEGIN
      RAISE NOTICE ''Quantity here is %'',quantity;  -- quantity = 80
   END;

   RAISE NOTICE ''Quantity here is %'',quantity;  -- quantity = 50
END;
' LANGUAGE 'plpgsql';

이처럼 변수의 선언 DECLARE 부분에서만 선언이 되어지는 것을 알 수 있다. 또 위에서 말한 것처럼 서브 블록에 대해서 외부 블록에서는 관여를 하지 않는다. 그리고 참고로 주석문을 처리하기 위해서 사용하는 것은 2종류가 있는데 위에서 사용하고 있는 --와 /* */ 이렇게 2종류가 사용된다. 그리고 변수의 선언에서 변수의 타입은 데이터 베이스가 지원하는 모든 타입을 사용할 수 있으며 다음의 문법에 맞게 사용된다.

변수이름 [ CONSTANT ] 변수형 [ NOT NULL ] [ { DEFAULT | := } 값 ];

초기화되지 않은 변수는 자동으로 NULL이 할당되기 때문에  NOT NULL로 선언된 변수는 필히 초기화를 해주어야 한다. 다음은 몇가지 변수 선언 예이다.

darkill NUMBER(5);
query INTEGER := 32;
url varchar := ''http://mysite.com'';
user_no CONSTANT INTEGER := 10;


프로그래밍.../PostgreSQL | Posted by 고기킬러 2009. 12. 22. 14:38

PostgreSQL의 PL/PgSQL 사용법

CREATE FUNCTION pgl_get_rows() RETURNS SETOF RECORD AS
'
DECLARE
  row RECORD;

BEGIN
  FOR row IN EXECUTE ''select field1,field2 from pkg_test ''
  LOOP
    RETURN next row;

  END LOOP;
  RETURN;
END;
' LANGUAGE 'plpgsql' ;