안녕하세요 저는 Oracle에 매우 익숙합니다. 아래의 SQL Server 저장 프로 시저를 Oracle 저장 프로 시저로 변환하는 데 도움을주십시오.SQL 저장 프로 시저를 Oracle 저장 프로 시저로 변환
아래는 Oracle로 변환하려고하는 SQL Server 저장 프로 시저입니다. 그러나 약간의 시간 때문에 해결책을 찾을 수 없으므로 도와주세요.
Create PROCEDURE dbo.myprocedure
@name VarChar(50),
@columnid VarChar(50),
@max Int OUTPUT
AS
DECLARE @period int,
@myStatement varChar(255)
SET @period = 99999
SET @max = 0
Create Table #newtable
(
valu INT
)
SET @myStatement = 'Insert INTO #newtable(valu) SELECT max(' + @columnid + ') FROM ' + @name + ' WHERE ' +
@columnid+ ' <= ' + Convert(varChar(5), @period)
EXEC (@myStatement)
SELECT @max = valu FROM #newtable
IF (@max = @period)
SET @max =-1
ELSE
SET @max= @max+ 1
DROP Table #newtable
GO
이 내가 작성 및 절차 등 값을 반환하지 않으며, 테이블이 너무 즉각적인 조항을 실행해야 떨어지고, Oracle 저장 프로 시저
Create Table newtable( valu INT);
CREATE OR REPLACE
PROCEDURE PROCEDURE1
(name IN VARCHAR2
, columnid IN VARCHAR2
, maxid IN OUT VARCHAR2
)
as
period number;
mystatement varChar(255);
BEGIN
period:= 99999;
maxid:= 0;
mystatement:= 'Insert INTO newtable(valu) SELECT max(columnid) FROM name WHERE columnid <= Convert(varChar(5), period)';
SELECT maxid = valu FROM newtable;
EXECUTE immediate mystatement;
IF (maxid= period)
return maxid:=-1;
ELSE
return maxid:= maxid + 1;
DROP Table newtable;
END PROCEDURE1;
위의 SQL Server에서 위의 작동합니다. 나는 오라클에 같은 것을 쓰고 싶다. 나는 어떻게 몰라? – user2380844
@DStanley를 에코 - PL/SQL로 작성하십시오. 그런 다음 특정 측면을 강조 표시합니다. 그것은 매우 유엔이 될 것이므로 당신을 위해 모든 세부 사항을 요구하는 것은 합리적이지 않습니다. –
원본을 살펴보면 한 테이블에서 한 열에서 최대 값을 얻는 것만 남았습니다. 나는 PL-SQL에서 문법적으로 변환하려고 시도하는 것보다 맹목적으로 시도하는 방법을 찾아 낼 것입니다. –