CREATE OR REPLACE PACKAGE T_TEST IS
TYPE C_CURSOR IS REF CURSOR;
PROCEDURE P_TEST(DT in date,V_RESULT OUT C_CURSOR);
END T_TEST;
CREATE OR REPLACE PACKAGE BODY T_TEST IS
PROCEDURE P_TEST(V_RESULT OUT C_CURSOR) IS
BEGIN
OPEN V_RESULT FOR
SELECT T_CODE,T_NAME FROM T_TEST WHERE T_DATE =DT;
END P_TEST;
END T_TEST;
如果你把它改造成一个函数,return这个V_RESULT 是不是就能用select解决了?
另外,sqlserver的openquery调用存储过程用call命令,可以参考一下这篇文章
但是,你这么做应该达不到想要的目的,因为"REF CURSOR"这种类型并不是实实在在的数据,这种类型本身其实只相当于一个对象id,其数据还是在原数据库里,只能被原数据库使用。如果你想要得到数据,可以尝试使用表函数返回一个table类型,这样就能当成普通的select语句使用了,直接查询出来也是一个表格