Deb*_*ebs 8 postgresql php-pgsql
我创建了一个过程,如:
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
Run Code Online (Sandbox Code Playgroud)
并试图像这样执行它:
SELECT * from insert_user_ax_register('debasrita','debasrita','client001',now(),'t','abc@gmail.com',now(),'ctc','debasrita','2014-15',9090909090);
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误:
错误:函数insert_user_ax_register(未知,未知,未知,带时区的时间戳,未知,未知,带时区的时间戳,未知,未知,未知,bigint)不存在SQL状态:42883提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.性格:16
请帮我解决这个问题.我是pgsql的新手,无法从谷歌找到任何解决方案.我在用pgsql 9.1.3
我可以知道实现目标的正确方法是什么?
a_h*_*ame 11
错误消息告诉您需要查找的内容:
"没有函数匹配给定的名称和参数类型 "
由于函数名称似乎正确,它只能是您传递的参数.所以记下为哪个参数传递了哪个值:
'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 constant phone_no bigint --> 'ctc' << second error: 'ctc' is not a bigint client_address varchar(200) --> 'debasrita' full_name varchar(100) --> '2014-15' financial_year varchar(10) --> 9090909090 << third error: 9090909090 is not a character literal
因此,您需要调整参数类型,例如,定义join_date为日期,而不是varchar调整或调整为每个参数传递的值.
最后你需要调用这样的函数:
SELECT insert_user_ax_register(...);
Run Code Online (Sandbox Code Playgroud)
而不是 select * from ...
| 归档时间: |
|
| 查看次数: |
37670 次 |
| 最近记录: |