복붙노트

[SQL] 어떻게 PostgreSQL의 일시적 기능을 만드는 방법?

SQL

어떻게 PostgreSQL의 일시적 기능을 만드는 방법?

나는 데이터베이스에 루프를 실행해야합니다. 이것은 단지 한 번 요구 사항입니다. 기능을 실행 한 후, 지금은 기능을 포기하고있다.

일시 / 처분 할 수있는 기능을 만들기위한 좋은 방법이 있습니까?

해결법

  1. ==============================

    1.내가 쓰는 된 스크립트에 많은 시간을 사용하는 방법을 알 필요. 당신 밝혀은 pg_temp 스키마를 사용하여 임시 기능을 만들 수 있습니다. 이것은 당신의 연결 요구에 만든 임시 테이블이 저장되는 곳입니다 스키마입니다. 연결이 폐쇄 또는 만료되면이 스키마는 삭제됩니다. 이 스키마 함수를 만들 수 있는지 턴은 스키마가 자동으로 생성됩니다. 따라서,

    내가 쓰는 된 스크립트에 많은 시간을 사용하는 방법을 알 필요. 당신 밝혀은 pg_temp 스키마를 사용하여 임시 기능을 만들 수 있습니다. 이것은 당신의 연결 요구에 만든 임시 테이블이 저장되는 곳입니다 스키마입니다. 연결이 폐쇄 또는 만료되면이 스키마는 삭제됩니다. 이 스키마 함수를 만들 수 있는지 턴은 스키마가 자동으로 생성됩니다. 따라서,

    create function pg_temp.testfunc() returns text as 
    $$ select 'hello'::text $$ language sql;
    

    긴 주위에 당신의 연결 막대기 등으로 곁에하는 함수 될 것입니다. 필요가 드롭 명령을 호출 없습니다.

  2. ==============================

    2.@의 crowmagnumb의 대답에 스마트 트릭에 대한 추가 참고 사항 몇 :

    @의 crowmagnumb의 대답에 스마트 트릭에 대한 추가 참고 사항 몇 :

    CREATE FUNCTION pg_temp.f_inc(int)
      RETURNS int AS 'SELECT $1 + 1' LANGUAGE sql IMMUTABLE;
    
    SELECT pg_temp.f_inc(42);
    f_inc
    -----
    43

    당신은 단지 반복 기능을 실행할 필요하고 당신이 필요로하는 모든 SQL의 경우, 대신 준비된 명령문을 고려하십시오. 그것은 많은 세션이 끝날 때 사망 임시 SQL 함수와 같은 역할을합니다. 아니 같은 일이하지만, 단지 다른 쿼리 안에 중첩되지, EXECUTE 자체를 사용할 수 있습니다. 예:

    PREPARE upd_tbl AS
    UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
    

    요구:

    EXECUTE upd_tbl(123, 'foo_name');
    

    세부:

  3. ==============================

    3.당신은 버전 9.0을 사용하는 경우, 새 DO 문이 작업을 수행 할 수 있습니다

    당신은 버전 9.0을 사용하는 경우, 새 DO 문이 작업을 수행 할 수 있습니다

    http://www.postgresql.org/docs/current/static/sql-do.html

    이전 버전을 사용하면 함수를 만들 호출, 다시 드롭해야합니다.

  4. ==============================

    4.광고 호크 절차는, 커서도 나쁘지 않다. 그러나 그들은 용도로 사용하기에는 너무 비효율적이다.

    광고 호크 절차는, 커서도 나쁘지 않다. 그러나 그들은 용도로 사용하기에는 너무 비효율적이다.

    그들은 당신에게 DB의 SQL 결과에 쉽게 루프를하게됩니다.

  5. from https://stackoverflow.com/questions/4990622/how-to-create-a-temporary-function-in-postgresql by cc-by-sa and MIT license