Я застрял в этом запросе. Я пытаюсь преобразовать, но, я новичок в Oracle 11 г.Как преобразовать хранимую процедуру MS SQL в Oracle
Это хранимая процедура ms sql для преобразования с Oracle 11 g.
CREATE PROCEDURE [dbo].[GetCustomers_Pager]
@SearchTerm VARCHAR(100) = ''
,@PageIndex INT = 1
,@PageSize INT = 10
,@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY [CustomerID] ASC
)AS RowNumber
,[CustomerID]
,[CompanyName]
,[ContactName]
,[City]
INTO #Results
FROM [Customers]
WHERE [ContactName] LIKE @SearchTerm + '%' OR @SearchTerm = ''
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
END
Я нахожу это MS SQL хранимой процедуры this link
Это мой провал оракул хранимой процедуры. Я застрял в синтаксисе INTO.
CREATE OR REPLACE
PROCEDURE GetCustomers_Pager
(SearchTerm IN VARCHAR2
, PageIndex IN NUMBER DEFAULT 1
, PageSize IN NUMBER DEFAULT 10
, RecordCount OUT NUMBER
) AS
BEGIN
SELECT
ROW_NUMBER() OVER(ORDER BY CustomerID ASC)AS RowNumber,
,CustomerID
,CompanyName
,ContactName
,City
INTO Results
FROM Customers
WHERE (Customers LIKE SearchTerm + '%' OR ContactName LIKE SearchTerm + '%') OR SearchTerm = '';
SELECT RecordCount = COUNT(*)
FROM Results;
SELECT * FROM Results
WHERE RowNumber BETWEEN(PageIndex -1) * PageSize + 1 AND(((PageIndex -1) * PageSize + 1) + PageSize) - 1;
DROP TABLE Results;
END GetCustomers_Pager;
Может ли кто-нибудь мне помочь?
Какую версию оракул вы используете? [возможно, это может помочь.] (http://stackoverflow.com/questions/470542/how-do-limit-the-number-of-rows-returned-by-an-oracle-query-after-ordering) –
Первое, что нужно сделать, это удалить кавычки '[..]' '. Это неверно для идентификатора SQL. –
oracle 11g version – oOZz