gpt4 book ai didi

postgresql - 如何在postgresql中直接执行存储过程?

转载 作者:行者123 更新时间:2023-11-29 11:19:09 26 4
gpt4 key购买 nike

我创建了一个程序,如:

CREATE OR REPLACE FUNCTION insert_user_ax_register(
user_name character varying(50),
password character varying(300),
role_id character varying(10),
created_dt date,
status boolean,
email character varying(50),
join_date character varying(30),
phone_no bigint,
client_address character varying(200),
full_name character varying(100),
financial_year character varying(10))
RETURNS void
AS $BODY$
declare
begin
INSERT INTO ax_register(user_name,password,role_id,created_dt,status,email,join_date,phone_no,client_address,full_name,financial_year)
VALUES (user_name,password,role_id,now(),true,email,join_date,phone_no,client_address,full_name,financial_year);
end
$BODY$
LANGUAGE plpgsql VOLATILE

并尝试像这样执行它:

SELECT * from insert_user_ax_register('debasrita','debasrita','client001',now(),'t','abc@gmail.com',now(),'ctc','debasrita','2014-15',9090909090);

但它抛出以下错误:

错误:函数 insert_user_ax_register(未知,未知,未知,带时区的时间戳,未知,未知,带时区的时间戳,未知,未知,未知,bigint)不存在SQL 状态:42883提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。字符数:16

请帮我解决这个问题。我是 pgsql 的新手,无法从谷歌找到任何解决方案。我正在使用 pgsql 9.1.3

我可以知道实现目标的正确方法是什么吗?

最佳答案

错误消息会告诉您需要查找的内容:

"No function matches the given name and argument types"

由于函数name 看起来是正确的,它只能是您传递的参数。所以写下哪个参数传递了哪个值:

'debasrita'                 --> user_name character varying(50)'debasrita'                 --> password character varying(300)'client001'                 --> role_id character varying(10)created_dt date             --> now()status boolean,             --> 't'email varchar(50)           --> 'abc@gmail.com'join_date varchar(30)       --> now()       << first error: now() is not a character constantphone_no bigint             --> 'ctc'       << second error: 'ctc' is not a bigintclient_address varchar(200) -->  'debasrita'full_name varchar(100)      --> '2014-15'financial_year varchar(10)  --> 9090909090  << third error: 9090909090  is not a character literal 

So you need to either adjust the parameter types, e.g. define join_date as date, not as varchar or adjust the values that you pass for each parameter.

And finally you need to call the function like this:

SELECT insert_user_ax_register(...);

而不是 select * from ...

关于postgresql - 如何在postgresql中直接执行存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com