16910


現在の実装は下記の通りです

[code]

    SELECT
      CASE 'バインド値' 
        WHEN 'ABC' THEN "none"
        ELSE NEXTVAL('☆') 
        END AS VALUE; 
    
[/code]

CASEの判定値にバインド値を設定しており、そのバインド値を「☆」の部分でも使用したいのですが方法がわかりません。  
分かる方がいましたら、ご教授をお願いします。


CC BY-SA 3.0
2015-09-24T08:12:49.490
16896
2015-09-25T01:05:12.667
2015-09-25T00:13:08.867
5793
7626
question
sql
POSTGRES バインド値を、同SQL内の別の箇所でも使用したい


from内でバインド値を取得すれば、select内で使いまわすことが出来ます。

[code]

    from (select 'バインド値' as BIND_VALUE) as BIND
    
[/code]

取得するときは、

[code]

    BIND.BIND_VALUE
    
[/code]

で取得することが出来ます。


CC BY-SA 3.0
2015-09-25T00:57:43.010
16910
2015-09-25T00:57:43.010
7626
16896
answer


手元のPostgres環境では次のようなSQLで動作しました。

[code]

    SELECT
      CASE seq_names.name 
        WHEN 'ABC' THEN 'none'
        ELSE CAST(NEXTVAL(seq_names.name) AS VARCHAR)
        END AS VALUE
    FROM
      (SELECT CAST('blogs_id_seq' AS VARCHAR) AS name) seq_names
    
[/code]

適宜CASTをしないと型の不一致でエラーが出るようです。


CC BY-SA 3.0
2015-09-25T01:05:12.667
16911
2015-09-25T01:05:12.667
85
16896
answer