我如何return一个"on the fly"table?不匹配似乎没有意义
How to I return a "on the fly" table? Mismatch seems to make no sense
我收到错误消息:return 声明为 return 记录的函数类型不匹配
我已对每一列使用 pg_typeof returned 以确保类型正确,但我仍然无法使其正常工作。
我需要 return 查询,这样我就可以构建另一个函数来读取结果并调用另一个函数 (PL/PGSQL) 来创建样本人物。它不能是一个简单的 INSERT,因为有许多规则需要遵循,而另一个 FUNCTION 已经完成了 create_person(此处未显示)
DROP TABLE IF EXISTS "common_last_name" CASCADE;
DROP TABLE IF EXISTS "common_first_name" CASCADE;
DROP TABLE IF EXISTS "common_nickname" CASCADE;
DROP TABLE IF EXISTS "common_honorific" CASCADE;
DROP TABLE IF EXISTS "common_suffix" CASCADE;
DROP TABLE IF EXISTS "common_stop_word" CASCADE;
DROP TABLE IF EXISTS "common_email_domain" CASCADE;
DROP TABLE IF EXISTS "common_document_type" CASCADE;
DROP TABLE IF EXISTS "common_year_of_birth" CASCADE;
DROP FUNCTION IF EXISTS _get_sample_data;
CREATE TABLE "common_last_name" (
"last_name" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"last_name_phonetic" text NOT NULL,
"last_name_phonetic_alt" text,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_first_name" (
"first_name" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"first_name_phonetic" text NOT NULL,
"first_name_phonetic_alt" text,
"genre" text,
"genre_m_f_percentage" int,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_nickname" (
"name" text NOT NULL,
"name_phonetic" text NOT NULL,
"name_phonetic_alt" text NOT NULL,
"nickname" text NOT NULL,
"nickname_phonetic" text NOT NULL,
"nickname_phonetic_alt" text NOT NULL,
"genre" text NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_honorific" (
"honorific" text PRIMARY KEY,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_suffix" (
"suffix" text PRIMARY KEY,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_stop_word" (
"stop_word" text PRIMARY KEY,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_email_domain" (
"domain_name" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_document_type" (
"country_iso_document_type" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_year_of_birth" (
"year" int,
"ratio" numeric NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
---------------------------
CREATE OR REPLACE FUNCTION _get_sample_data(p_number_of_records INT)
RETURNS TABLE(first_name TEXT, last_name TEXT, email TEXT, phone TEXT, document TEXT, date_of_birth TIMESTAMP)
AS $$
WITH first_names_weighted AS
(
SELECT
first_name,
SUM(ratio) OVER (
ORDER BY
first_name) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
first_name) AS upper_bound
FROM
common_first_name
),
last_names_weighted AS
(
SELECT
last_name,
SUM(ratio) OVER (
ORDER BY
last_name) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
last_name) AS upper_bound
FROM
common_last_name
),
email_domain_weighted AS
(
SELECT
domain_name,
SUM(ratio) OVER (
ORDER BY
domain_name ) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
domain_name ) AS upper_bound
FROM
common_email_domain
),
document_type_weighted AS
(
SELECT
country_iso_document_type,
SUM(ratio) OVER (
ORDER BY
country_iso_document_type ) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
country_iso_document_type ) AS upper_bound
FROM
common_document_type
),
year_of_birth_weighted AS
(
SELECT
YEAR,
SUM(ratio) OVER (
ORDER BY
YEAR ) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
YEAR ) AS upper_bound
FROM
common_year_of_birth
),
randoms AS
(
SELECT
random() * (
SELECT
SUM(ratio)
FROM
common_first_name ) AS f_random,
random() * (
SELECT
SUM(ratio)
FROM
common_last_name ) AS l_random,
random() * (
SELECT
SUM(ratio)
FROM
common_email_domain ) AS e_random,
random() * (
SELECT
SUM(ratio)
FROM
common_document_type ) AS d_random,
random() * (
SELECT
SUM(ratio)
FROM
common_year_of_birth ) AS y_random
FROM
generate_series(1, p_number_of_records )
)
SELECT
--r,
first_name AS first_name,
last_name AS last_name,
LOWER( SUBSTRING( first_name, 1, 2 + (random() * (length(first_name) - 2))::INTEGER) || SUBSTRING( last_name, 1, 2 + (random() * (length(last_name) - 2))::INTEGER) || '@' || domain_name ) AS email,
'+1 ' || lpad(round(random() * 999)::text, 3, '0') || ' ' || lpad(round(random() * 999)::text, 3, '0') || ' ' || lpad(round(random() * 9999)::text, 4, '0') AS phone,
CASE
WHEN
POSITION('.sin' IN country_iso_document_type) > 1
THEN
country_iso_document_type || '.' || lpad((round(random() * 999))::TEXT, 3, '0') || '-' || lpad((round(random() * 999))::TEXT, 3, '0') || '-' || lpad((round(random() * 999))::TEXT, 3, '0')
ELSE
CASE
WHEN
POSITION('.driver' IN country_iso_document_type) > 1
THEN
country_iso_document_type || '.' || chr((65 + random()*25)::INT) || lpad(CAST(round(random() * 99999) AS text), 5, '0') || '-' || lpad((round(random() * 99999))::TEXT, 5, '0') || '-' || lpad((round(random() * 99999))::TEXT, 5, '0')
ELSE
CASE
WHEN
POSITION('.passport' IN country_iso_document_type) > 1
THEN
country_iso_document_type || '.' || chr((65 + random()*25)::INT) || chr((65 + random()*25)::INT) || lpad((round(random() * 999999999999))::TEXT, 12, '0')
ELSE
NULL
END
END
END
AS document,
make_date(YEAR, (round(1 + random() * 11))::INTEGER, 1) + make_interval(days => (round(1 + random() * 30))::INTEGER) AS dob
FROM
randoms r
CROSS JOIN
first_names_weighted f
CROSS JOIN
last_names_weighted l
CROSS JOIN
email_domain_weighted e
CROSS JOIN
document_type_weighted d
CROSS JOIN
year_of_birth_weighted y
WHERE
f.lower_bound <= r.f_random
AND r.f_random <= f.upper_bound
AND l.lower_bound <= r.l_random
AND r.l_random <= l.upper_bound
AND e.lower_bound <= r.e_random
AND r.e_random <= e.upper_bound
AND d.lower_bound <= r.d_random
AND r.d_random <= d.upper_bound
AND y.lower_bound <= r.y_random
AND r.y_random <= y.upper_bound;
END;
$$ language sql;
-- ***SAMPLE DATA
--Common email domains
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('gmail.com', 200);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('yahoo.com', 20);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('outlook.com', 20);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('hotmail.com', 20);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('icloud.com', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('yahoo.ca', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('shaw.ca', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('live.ca', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('aol.com', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('protonmal.com', 4);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('zoho.com', 4);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('startmail.com', 4);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('thexyz.com', 2);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('gmial.com', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('yaho.com', 5);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('outloock.com', 5);
--Common year of birth
--1.7 ratio 18-24 age
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-18, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-19, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-20, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-21, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-22, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-23, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-24, 17);
--5.2 ratio 25-44 age
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-25, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-26, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-27, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-28, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-29, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-30, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-31, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-32, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-33, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-34, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-35, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-36, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-37, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-38, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-39, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-40, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-41, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-42, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-43, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-44, 52);
--Common document types
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('', 1000);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('ca.sin', 100);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('ca.driver-licence', 100);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('in.passport', 8);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('us.passport', 6);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('cn.passport', 4);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('mx.passport', 4);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('br.passport', 4);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('ca.passport', 1);
--Common First Names
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('John', 0.01827302261, dmetaphone('John'), dmetaphone_alt('John'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('David', 0.01546078785, dmetaphone('David'), dmetaphone_alt('David'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Robert', 0.01443493568, dmetaphone('Robert'), dmetaphone_alt('Robert'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Michael', 0.01203178307, dmetaphone('Michael'), dmetaphone_alt('Michael'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Paul', 0.009156650734, dmetaphone('Paul'), dmetaphone_alt('Paul'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Richard', 0.007790220995, dmetaphone('Richard'), dmetaphone_alt('Richard'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('James', 0.007687311565, dmetaphone('James'), dmetaphone_alt('James'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Peter', 0.00749865699, dmetaphone('Peter'), dmetaphone_alt('Peter'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('William', 0.006330570112, dmetaphone('William'), dmetaphone_alt('William'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Brian', 0.006272669254, dmetaphone('Brian'), dmetaphone_alt('Brian'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Mary', 0.006226325682, dmetaphone('Mary'), dmetaphone_alt('Mary'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Linda', 0.005831280103, dmetaphone('Linda'), dmetaphone_alt('Linda'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Daniel', 0.00570003053, dmetaphone('Daniel'), dmetaphone_alt('Daniel'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Mark', 0.005683095101, dmetaphone('Mark'), dmetaphone_alt('Mark'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Chris', 0.005489481954, dmetaphone('Chris'), dmetaphone_alt('Chris'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Karen', 0.005429559525, dmetaphone('Karen'), dmetaphone_alt('Karen'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Jennifer', 0.005307616808, dmetaphone('Jennifer'), dmetaphone_alt('Jennifer'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Lisa', 0.005023833946, dmetaphone('Lisa'), dmetaphone_alt('Lisa'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Susan', 0.004946709088, dmetaphone('Susan'), dmetaphone_alt('Susan'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Michel', 0.00491550823, dmetaphone('Michel'), dmetaphone_alt('Michel'), 'm', 100);
--Common Last Names
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Smith',dmetaphone('Smith'), dmetaphone_alt('Smith'), 0.01321048057);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Brown',dmetaphone('Brown'), dmetaphone_alt('Brown'), 0.007484346222);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Tremblay',dmetaphone('Tremblay'), dmetaphone_alt('Tremblay'), 0.007333709135);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Martin',dmetaphone('Martin'), dmetaphone_alt('Martin'), 0.006303244211);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Roy',dmetaphone('Roy'), dmetaphone_alt('Roy'), 0.006216409597);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Gagnon',dmetaphone('Gagnon'), dmetaphone_alt('Gagnon'), 0.005852226737);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Lee',dmetaphone('Lee'), dmetaphone_alt('Lee'), 0.00573562222);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Wilson',dmetaphone('Wilson'), dmetaphone_alt('Wilson'), 0.005690520472);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Johnson',dmetaphone('Johnson'), dmetaphone_alt('Johnson'), 0.005465286746);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('MacDonald',dmetaphone('MacDonald'), dmetaphone_alt('MacDonald'), 0.005415372312);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Taylor',dmetaphone('Taylor'), dmetaphone_alt('Taylor'), 0.004917534274);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Campbell',dmetaphone('Campbell'), dmetaphone_alt('Campbell'), 0.004886114306);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Anderson',dmetaphone('Anderson'), dmetaphone_alt('Anderson'), 0.004837781184);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Jones',dmetaphone('Jones'), dmetaphone_alt('Jones'), 0.004689619193);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Leblanc',dmetaphone('Leblanc'), dmetaphone_alt('Leblanc'), 0.004670574706);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Cote',dmetaphone('Cote'), dmetaphone_alt('Cote'), 0.004568820763);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Williams',dmetaphone('Williams'), dmetaphone_alt('Williams'), 0.004381538507);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Miller',dmetaphone('Miller'), dmetaphone_alt('Miller'), 0.004340080651);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Thompson',dmetaphone('Thompson'), dmetaphone_alt('Thompson'), 0.004331349063);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Gauthier',dmetaphone('Gauthier'), dmetaphone_alt('Gauthier'), 0.004196181326);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('White',dmetaphone('White'), dmetaphone_alt('White'), 0.003903226226);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Morin',dmetaphone('Morin'), dmetaphone_alt('Morin'), 0.003866718561);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Wong',dmetaphone('Wong'), dmetaphone_alt('Wong'), 0.003792740695);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Young',dmetaphone('Young'), dmetaphone_alt('Young'), 0.003712231326);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Bouchard',dmetaphone('Bouchard'), dmetaphone_alt('Bouchard'), 0.003682461422);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Scott',dmetaphone('Scott'), dmetaphone_alt('Scott'), 0.003515461202);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Stewart',dmetaphone('Stewart'), dmetaphone_alt('Stewart'), 0.003489747706);
如有任何帮助,我们将不胜感激。
谢谢
问题是这样的:
END;
$$ language sql;
END;
在plpgsql
中与BEGIN
结合使用,在代码中标记块。 sql
语言函数不使用此语法,因为它们没有块。 END;
的存在导致此错误:
ERROR: return type mismatch in function declared to return record
DETAIL: Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING.
CONTEXT: SQL function "_get_sample_data"
我收到错误消息:return 声明为 return 记录的函数类型不匹配
我已对每一列使用 pg_typeof returned 以确保类型正确,但我仍然无法使其正常工作。
我需要 return 查询,这样我就可以构建另一个函数来读取结果并调用另一个函数 (PL/PGSQL) 来创建样本人物。它不能是一个简单的 INSERT,因为有许多规则需要遵循,而另一个 FUNCTION 已经完成了 create_person(此处未显示)
DROP TABLE IF EXISTS "common_last_name" CASCADE;
DROP TABLE IF EXISTS "common_first_name" CASCADE;
DROP TABLE IF EXISTS "common_nickname" CASCADE;
DROP TABLE IF EXISTS "common_honorific" CASCADE;
DROP TABLE IF EXISTS "common_suffix" CASCADE;
DROP TABLE IF EXISTS "common_stop_word" CASCADE;
DROP TABLE IF EXISTS "common_email_domain" CASCADE;
DROP TABLE IF EXISTS "common_document_type" CASCADE;
DROP TABLE IF EXISTS "common_year_of_birth" CASCADE;
DROP FUNCTION IF EXISTS _get_sample_data;
CREATE TABLE "common_last_name" (
"last_name" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"last_name_phonetic" text NOT NULL,
"last_name_phonetic_alt" text,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_first_name" (
"first_name" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"first_name_phonetic" text NOT NULL,
"first_name_phonetic_alt" text,
"genre" text,
"genre_m_f_percentage" int,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_nickname" (
"name" text NOT NULL,
"name_phonetic" text NOT NULL,
"name_phonetic_alt" text NOT NULL,
"nickname" text NOT NULL,
"nickname_phonetic" text NOT NULL,
"nickname_phonetic_alt" text NOT NULL,
"genre" text NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_honorific" (
"honorific" text PRIMARY KEY,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_suffix" (
"suffix" text PRIMARY KEY,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_stop_word" (
"stop_word" text PRIMARY KEY,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_email_domain" (
"domain_name" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_document_type" (
"country_iso_document_type" text PRIMARY KEY,
"ratio" numeric NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
CREATE TABLE "common_year_of_birth" (
"year" int,
"ratio" numeric NOT NULL,
"inserted_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL,
"updated_at" timestamp WITH time zone DEFAULT timezone('utc'::text, now()) NOT NULL
);
---------------------------
CREATE OR REPLACE FUNCTION _get_sample_data(p_number_of_records INT)
RETURNS TABLE(first_name TEXT, last_name TEXT, email TEXT, phone TEXT, document TEXT, date_of_birth TIMESTAMP)
AS $$
WITH first_names_weighted AS
(
SELECT
first_name,
SUM(ratio) OVER (
ORDER BY
first_name) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
first_name) AS upper_bound
FROM
common_first_name
),
last_names_weighted AS
(
SELECT
last_name,
SUM(ratio) OVER (
ORDER BY
last_name) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
last_name) AS upper_bound
FROM
common_last_name
),
email_domain_weighted AS
(
SELECT
domain_name,
SUM(ratio) OVER (
ORDER BY
domain_name ) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
domain_name ) AS upper_bound
FROM
common_email_domain
),
document_type_weighted AS
(
SELECT
country_iso_document_type,
SUM(ratio) OVER (
ORDER BY
country_iso_document_type ) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
country_iso_document_type ) AS upper_bound
FROM
common_document_type
),
year_of_birth_weighted AS
(
SELECT
YEAR,
SUM(ratio) OVER (
ORDER BY
YEAR ) - ratio AS lower_bound,
SUM(ratio) OVER (
ORDER BY
YEAR ) AS upper_bound
FROM
common_year_of_birth
),
randoms AS
(
SELECT
random() * (
SELECT
SUM(ratio)
FROM
common_first_name ) AS f_random,
random() * (
SELECT
SUM(ratio)
FROM
common_last_name ) AS l_random,
random() * (
SELECT
SUM(ratio)
FROM
common_email_domain ) AS e_random,
random() * (
SELECT
SUM(ratio)
FROM
common_document_type ) AS d_random,
random() * (
SELECT
SUM(ratio)
FROM
common_year_of_birth ) AS y_random
FROM
generate_series(1, p_number_of_records )
)
SELECT
--r,
first_name AS first_name,
last_name AS last_name,
LOWER( SUBSTRING( first_name, 1, 2 + (random() * (length(first_name) - 2))::INTEGER) || SUBSTRING( last_name, 1, 2 + (random() * (length(last_name) - 2))::INTEGER) || '@' || domain_name ) AS email,
'+1 ' || lpad(round(random() * 999)::text, 3, '0') || ' ' || lpad(round(random() * 999)::text, 3, '0') || ' ' || lpad(round(random() * 9999)::text, 4, '0') AS phone,
CASE
WHEN
POSITION('.sin' IN country_iso_document_type) > 1
THEN
country_iso_document_type || '.' || lpad((round(random() * 999))::TEXT, 3, '0') || '-' || lpad((round(random() * 999))::TEXT, 3, '0') || '-' || lpad((round(random() * 999))::TEXT, 3, '0')
ELSE
CASE
WHEN
POSITION('.driver' IN country_iso_document_type) > 1
THEN
country_iso_document_type || '.' || chr((65 + random()*25)::INT) || lpad(CAST(round(random() * 99999) AS text), 5, '0') || '-' || lpad((round(random() * 99999))::TEXT, 5, '0') || '-' || lpad((round(random() * 99999))::TEXT, 5, '0')
ELSE
CASE
WHEN
POSITION('.passport' IN country_iso_document_type) > 1
THEN
country_iso_document_type || '.' || chr((65 + random()*25)::INT) || chr((65 + random()*25)::INT) || lpad((round(random() * 999999999999))::TEXT, 12, '0')
ELSE
NULL
END
END
END
AS document,
make_date(YEAR, (round(1 + random() * 11))::INTEGER, 1) + make_interval(days => (round(1 + random() * 30))::INTEGER) AS dob
FROM
randoms r
CROSS JOIN
first_names_weighted f
CROSS JOIN
last_names_weighted l
CROSS JOIN
email_domain_weighted e
CROSS JOIN
document_type_weighted d
CROSS JOIN
year_of_birth_weighted y
WHERE
f.lower_bound <= r.f_random
AND r.f_random <= f.upper_bound
AND l.lower_bound <= r.l_random
AND r.l_random <= l.upper_bound
AND e.lower_bound <= r.e_random
AND r.e_random <= e.upper_bound
AND d.lower_bound <= r.d_random
AND r.d_random <= d.upper_bound
AND y.lower_bound <= r.y_random
AND r.y_random <= y.upper_bound;
END;
$$ language sql;
-- ***SAMPLE DATA
--Common email domains
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('gmail.com', 200);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('yahoo.com', 20);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('outlook.com', 20);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('hotmail.com', 20);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('icloud.com', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('yahoo.ca', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('shaw.ca', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('live.ca', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('aol.com', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('protonmal.com', 4);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('zoho.com', 4);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('startmail.com', 4);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('thexyz.com', 2);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('gmial.com', 10);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('yaho.com', 5);
INSERT INTO common_email_domain(domain_name, ratio) VALUES ('outloock.com', 5);
--Common year of birth
--1.7 ratio 18-24 age
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-18, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-19, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-20, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-21, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-22, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-23, 17);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-24, 17);
--5.2 ratio 25-44 age
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-25, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-26, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-27, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-28, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-29, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-30, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-31, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-32, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-33, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-34, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-35, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-36, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-37, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-38, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-39, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-40, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-41, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-42, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-43, 52);
INSERT INTO common_year_of_birth(year, ratio) VALUES (date_part('year', CURRENT_DATE)-44, 52);
--Common document types
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('', 1000);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('ca.sin', 100);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('ca.driver-licence', 100);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('in.passport', 8);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('us.passport', 6);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('cn.passport', 4);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('mx.passport', 4);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('br.passport', 4);
INSERT INTO common_document_type(country_iso_document_type, ratio) VALUES ('ca.passport', 1);
--Common First Names
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('John', 0.01827302261, dmetaphone('John'), dmetaphone_alt('John'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('David', 0.01546078785, dmetaphone('David'), dmetaphone_alt('David'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Robert', 0.01443493568, dmetaphone('Robert'), dmetaphone_alt('Robert'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Michael', 0.01203178307, dmetaphone('Michael'), dmetaphone_alt('Michael'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Paul', 0.009156650734, dmetaphone('Paul'), dmetaphone_alt('Paul'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Richard', 0.007790220995, dmetaphone('Richard'), dmetaphone_alt('Richard'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('James', 0.007687311565, dmetaphone('James'), dmetaphone_alt('James'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Peter', 0.00749865699, dmetaphone('Peter'), dmetaphone_alt('Peter'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('William', 0.006330570112, dmetaphone('William'), dmetaphone_alt('William'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Brian', 0.006272669254, dmetaphone('Brian'), dmetaphone_alt('Brian'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Mary', 0.006226325682, dmetaphone('Mary'), dmetaphone_alt('Mary'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Linda', 0.005831280103, dmetaphone('Linda'), dmetaphone_alt('Linda'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Daniel', 0.00570003053, dmetaphone('Daniel'), dmetaphone_alt('Daniel'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Mark', 0.005683095101, dmetaphone('Mark'), dmetaphone_alt('Mark'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Chris', 0.005489481954, dmetaphone('Chris'), dmetaphone_alt('Chris'), 'm', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Karen', 0.005429559525, dmetaphone('Karen'), dmetaphone_alt('Karen'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Jennifer', 0.005307616808, dmetaphone('Jennifer'), dmetaphone_alt('Jennifer'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Lisa', 0.005023833946, dmetaphone('Lisa'), dmetaphone_alt('Lisa'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Susan', 0.004946709088, dmetaphone('Susan'), dmetaphone_alt('Susan'), 'f', 100);
INSERT INTO common_first_name(first_name, ratio, first_name_phonetic, first_name_phonetic_alt, genre, genre_m_f_percentage) VALUES ('Michel', 0.00491550823, dmetaphone('Michel'), dmetaphone_alt('Michel'), 'm', 100);
--Common Last Names
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Smith',dmetaphone('Smith'), dmetaphone_alt('Smith'), 0.01321048057);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Brown',dmetaphone('Brown'), dmetaphone_alt('Brown'), 0.007484346222);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Tremblay',dmetaphone('Tremblay'), dmetaphone_alt('Tremblay'), 0.007333709135);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Martin',dmetaphone('Martin'), dmetaphone_alt('Martin'), 0.006303244211);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Roy',dmetaphone('Roy'), dmetaphone_alt('Roy'), 0.006216409597);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Gagnon',dmetaphone('Gagnon'), dmetaphone_alt('Gagnon'), 0.005852226737);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Lee',dmetaphone('Lee'), dmetaphone_alt('Lee'), 0.00573562222);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Wilson',dmetaphone('Wilson'), dmetaphone_alt('Wilson'), 0.005690520472);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Johnson',dmetaphone('Johnson'), dmetaphone_alt('Johnson'), 0.005465286746);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('MacDonald',dmetaphone('MacDonald'), dmetaphone_alt('MacDonald'), 0.005415372312);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Taylor',dmetaphone('Taylor'), dmetaphone_alt('Taylor'), 0.004917534274);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Campbell',dmetaphone('Campbell'), dmetaphone_alt('Campbell'), 0.004886114306);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Anderson',dmetaphone('Anderson'), dmetaphone_alt('Anderson'), 0.004837781184);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Jones',dmetaphone('Jones'), dmetaphone_alt('Jones'), 0.004689619193);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Leblanc',dmetaphone('Leblanc'), dmetaphone_alt('Leblanc'), 0.004670574706);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Cote',dmetaphone('Cote'), dmetaphone_alt('Cote'), 0.004568820763);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Williams',dmetaphone('Williams'), dmetaphone_alt('Williams'), 0.004381538507);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Miller',dmetaphone('Miller'), dmetaphone_alt('Miller'), 0.004340080651);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Thompson',dmetaphone('Thompson'), dmetaphone_alt('Thompson'), 0.004331349063);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Gauthier',dmetaphone('Gauthier'), dmetaphone_alt('Gauthier'), 0.004196181326);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('White',dmetaphone('White'), dmetaphone_alt('White'), 0.003903226226);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Morin',dmetaphone('Morin'), dmetaphone_alt('Morin'), 0.003866718561);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Wong',dmetaphone('Wong'), dmetaphone_alt('Wong'), 0.003792740695);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Young',dmetaphone('Young'), dmetaphone_alt('Young'), 0.003712231326);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Bouchard',dmetaphone('Bouchard'), dmetaphone_alt('Bouchard'), 0.003682461422);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Scott',dmetaphone('Scott'), dmetaphone_alt('Scott'), 0.003515461202);
INSERT INTO common_last_name(last_name, last_name_phonetic, last_name_phonetic_alt, ratio) VALUES ('Stewart',dmetaphone('Stewart'), dmetaphone_alt('Stewart'), 0.003489747706);
如有任何帮助,我们将不胜感激。
谢谢
问题是这样的:
END;
$$ language sql;
END;
在plpgsql
中与BEGIN
结合使用,在代码中标记块。 sql
语言函数不使用此语法,因为它们没有块。 END;
的存在导致此错误:
ERROR: return type mismatch in function declared to return record
DETAIL: Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING.
CONTEXT: SQL function "_get_sample_data"