我在我的机器上在c#中用call调用存储过程没问题.
一样的程序到别人的机器上却出现错误,但是用select * from 能调用,用call才出问题.
请问是什么原因呢?
谢谢了~很急
一样的程序到别人的机器上却出现错误,但是用select * from 能调用,用call才出问题.
请问是什么原因呢?
谢谢了~很急
解决方案 »
- 关于sql insert语句报错问题 跪求大虾指导!!!
- Mysql里有没有explain类似的工具可以分析DML语句的执行过程?
- mysql函数中传入表名参数的问题!
- 菜鸟问题
- 请问有关MYSQL的分页语句
- 如何建一个表,并且限制这个表的记录只能输入N条?谢谢 ̄!
- 菜鸟的数据库创建问题
- 請教:下載了 mysql4.1.0-win32-apache.zip ,解壓後發現沒有setup文件,我以前裝的mysql3.2.3安裝過後的目錄一樣,不知4.1的是如何安裝
- 求一mysql批量替换语句
- 停车场停车时长统计+++++++++++++
- mysql怎样删除mytable表中id字段中 删除含有'-'的记录啊
- 一个乱码的问题
RETURNS SETOF "ORG_INFO" AS
$BODY$
DECLARE
r "ORG_INFO"%rowtype;
BEGIN
for r in select "ID","ORGNAME" from "ORG_INFO"
loop
return next r;
end loop; return;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION "PC_GetORGINFO"() OWNER TO postgres;
我的存储过程ORG_INFO是表名
ERROR [0A000] Error while executing the query;
ERROR: set-valued function called in context that cannot accept a set
背景: PL/pgSQL function "PC_GetMONITOR_POINT_INFO" line 7 at return next
我在他的机器上随便用一个没有返回的存储过程就正确~但是用返回return next的就错误,看了原因,说是没有返回类型?
但是我的返回类型就是那个表~
求原因
所以不是服务端的问题。最大的可能是接口问题。
你的那台能用call调用成功,说明你的接口具有将call转换为select的这个功能。而另外那台的接口可能和你的不一样,(如版本等),缺乏这种转换功能,所以出错了。解决方法:全部改为select语句,不要让接口做太多的工作。这是最好的解决方法。