CREATE OR REPLACE PACKAGE ArticleGetMostPopular AS Type RetCursor Is Ref Cursor; Procedure ReturnCursor( nCount IN number, pCursor OUT RetCursor); END; / show error CREATE OR REPLACE PACKAGE BODY ArticleGetMostPopular AS Procedure ReturnCursor( nCount IN number, pCursor OUT RetCursor) is Begin open pCursor for select * FROM (SELECT Article.ID, COUNT(*) AS Count FROM Article WHERE SomeCriteriaHere GROUP BY Article.ID ORDER BY SomeCriteriaHere DESC) where ROWNUM <= nCount; End; END; / show errorI left out the GROUP BY in the private message. In VFP to call the SP:
nCount = 10 && get top 10 records lcSQL = "{call ArticleGetMostPopular.ReturnCursor(" + TRANSFORM(nCount) + ")}" lnRetVal = SQLEXEC(lnHandle, lcSQL, 'crsMostPopular')