我创建了一个过程,如:
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
请问达到目的的正确方法是什么?
如果您使用的是pgAdmintool,只需右键单击架构下的函数或存储过程,然后选择properties和Parameters。现在插入要插入的值。
错误消息告诉您需要查找的内容:
“没有函数与给定名称和参数类型匹配”“
由于函数名称似乎正确,因此它只能是您正在传递的参数。因此,写下为哪个参数传递了哪个值:
'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
定义为date,而不是varchar
,或者调整为每个参数传递的值。
最后,您需要像这样调用函数:
SELECT insert_user_ax_register(...);
而不是select*from
问题内容: 简而言之:我正在尝试在Entity Framework中运行Oracle存储过程(我知道这听起来很奇怪,但是在一般应用程序中使用Entity Framework,但是由于修改密钥的限制,EF无法处理此特定命令。值)。 过程具有一些参数(仅IN),并更新表中的值。我通过运行测试了它: 它工作正常。 我的参数定义如下: 我的查询是: 我正在尝试从C#代码执行它。即通过运行: 我收到错误OR
问题内容: 如果我在SQL中创建一个存储过程并在BEGIN / END TRANSACTION中调用它(),那么此其他存储过程是否也属于事务? 我不知道它是否像C#中的try / catches一样工作。 问题答案: 是的,您在“开始事务”和“提交”(或“回滚”)之间进行的 所有操作都是 事务的一部分。
作为Hibernate中BLOB值的后期创建钩子的替代方法,我认为数据库内触发器是更好的解决方案,因此我尝试编写以下触发器: 将与触发器一起使用,例如: 然而,我无法计算出构建语句的语法。 [2022-03-09 16:14:51][42601]ERROR:语法错误在或接近lo_oid [2022-03-09 16:14:51]位置:279 真的不可能像在其他语句中那样使用变量吗?
我如何在服务器的另一个存储过程中执行SQL存储过程?我将如何传递第二个过程的参数。?
问题内容: 我想使用Oracle SQL Developer异步执行存储过程很多次。 伪代码 存储过程的目的是进行一些插入。为了进行测试,我只想异步执行存储过程很多次。我不在乎任何返回值。 有没有一种 “简便”的 方法来做到这一点? 问题答案: 由于您要模拟N个会话,每个会话均调用该过程1000 / N次,因此我可能会执行类似的操作 本示例将启动10个会话,每个会话将快速连续执行该过程100次,前