回答編集履歴
3
SQL文にpg_typeof関数の記述を追記
answer
CHANGED
@@ -3,14 +3,11 @@
|
|
3
3
|
> bigint型が期待しているnumeric型と一致しないと出ます。
|
4
4
|
> 数値型→数値型での変換については記載がありませんでした。
|
5
5
|
|
6
|
-
値の上限値をDBAが制御できない関数に対する戻り値の型を
|
7
|
-
ダイレクトにキャストしようとしていることが原因だと思います。
|
8
|
-
|
9
6
|
数値型(`固定`) → 文字列型 → 数値型(`任意`)
|
10
7
|
という方式のキャストでどうでしょうか。以下サンプルです。
|
11
8
|
|
12
9
|
```SQL
|
13
|
-
CREATE TABLE
|
10
|
+
CREATE TABLE sample
|
14
11
|
(
|
15
12
|
seq serial primary key
|
16
13
|
, cid int not null
|
@@ -19,7 +16,7 @@
|
|
19
16
|
, qua float not null
|
20
17
|
);
|
21
18
|
|
22
|
-
INSERT INTO
|
19
|
+
INSERT INTO sample
|
23
20
|
( cid, ymd, item, qua )
|
24
21
|
VALUES
|
25
22
|
( 1, '2021-09-01', 'A', 10 )
|
@@ -52,7 +49,7 @@
|
|
52
49
|
, (
|
53
50
|
count(1) over( order by t.ymd )
|
54
51
|
)::varchar::numeric
|
55
|
-
FROM
|
52
|
+
FROM sample t
|
56
53
|
WHERE t.cid = ANY ( $1 )
|
57
54
|
GROUP BY 1
|
58
55
|
)
|
@@ -62,18 +59,23 @@
|
|
62
59
|
LANGUAGE PLpgSQL;
|
63
60
|
|
64
61
|
|
62
|
+
SELECT ymd
|
63
|
+
, g_count
|
64
|
+
, d_count
|
65
|
+
, pg_typeof( g_count ) g_type
|
66
|
+
, pg_typeof( d_count ) d_type
|
65
|
-
|
67
|
+
FROM hoge( array[1,2] )
|
66
68
|
ORDER BY d_count ;
|
67
69
|
```
|
68
70
|
|
69
71
|
|
70
72
|
```result
|
71
|
-
ymd | g_count | d_count
|
73
|
+
ymd | g_count | d_count | g_type | d_type
|
72
|
-
------------+---------+---------
|
74
|
+
------------+---------+---------+---------+---------
|
73
|
-
2021-09-01 | 3 | 1
|
75
|
+
2021-09-01 | 3 | 1 | numeric | numeric
|
74
|
-
2021-09-02 | 1 | 2
|
76
|
+
2021-09-02 | 1 | 2 | numeric | numeric
|
75
|
-
2021-09-03 | 1 | 3
|
77
|
+
2021-09-03 | 1 | 3 | numeric | numeric
|
76
|
-
2021-09-04 | 2 | 4
|
78
|
+
2021-09-04 | 2 | 4 | numeric | numeric
|
77
|
-
2021-09-05 | 1 | 5
|
79
|
+
2021-09-05 | 1 | 5 | numeric | numeric
|
78
|
-
2021-09-06 | 1 | 6
|
80
|
+
2021-09-06 | 1 | 6 | numeric | numeric
|
79
81
|
```
|
2
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
値の上限値をDBAが制御できない関数に対する戻り値の型を
|
7
7
|
ダイレクトにキャストしようとしていることが原因だと思います。
|
8
8
|
|
9
|
-
数値型(`
|
9
|
+
数値型(`固定`) → 文字列型 → 数値型(`任意`)
|
10
10
|
という方式のキャストでどうでしょうか。以下サンプルです。
|
11
11
|
|
12
12
|
```SQL
|
1
一部文言を変更
answer
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
> bigint型が期待しているnumeric型と一致しないと出ます。
|
4
4
|
> 数値型→数値型での変換については記載がありませんでした。
|
5
5
|
|
6
|
-
値の上限値をDBAが制御できない関数
|
6
|
+
値の上限値をDBAが制御できない関数に対する戻り値の型を
|
7
|
-
に対する戻り値の型を
|
8
|
-
|
7
|
+
ダイレクトにキャストしようとしていることが原因だと思います。
|
9
|
-
原因だと思います。
|
10
8
|
|
11
9
|
数値型(`高`) → 文字列型 → 数値型(`低`)
|
12
10
|
という方式のキャストでどうでしょうか。以下サンプルです。
|