以下是Sqlserver中的写法,实现同样的功能,在Oracle中该如何实现?SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------
--根据指定的表名称获取一个唯一的ID值
---------------------
ALTER proc [dbo].[GET_IID]
@TableName nvarchar(50)
as
declare @ID bigint
set @ID=0
update GetIID set @ID = IID = IID + 1 where TableName = @TableName
select @ID
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------
--根据指定的表名称获取一个唯一的ID值
---------------------
ALTER proc [dbo].[GET_IID]
@TableName nvarchar(50)
as
declare @ID bigint
set @ID=0
update GetIID set @ID = IID = IID + 1 where TableName = @TableName
select @ID
update GetIID set @ID = IID = IID + 1 where TableName = @TableName,扑通啊扑通,帮你顶
AS
v_sql varchar2(20);
BEGIN
v_sql:='update GetIID set IID = IID + 1 where TableName = '|| TableName;
execute immediate v_sql INTO NEWID ;
END;
试试
--没测试,自己运行下试试:
create procedure GET_IID(TableName IN varchar2(50), i_result out integer)
as
begin
update GetIID
set IID = IID + 1
where TableName = '|| TableName
returning IID INTO i_result;
commit;
end;
create procedure GET_IID(str_tablename IN varchar2(50), i_result out integer)
as
begin
update GetIID
set IID = IID + 1
where TableName = str_tablename
returning IID INTO i_result;
commit;
end;
PROCEDURE GET_IID 已编译
Errors: check compiler log创建出来的存储过程在Sql Developer中看到的是红X,这可怎么办?
(
str_tablename in varchar2
, i_result out number
) AS
BEGIN
update GetIID
set IID = IID + 1
where TableName = str_tablename
returning IID INTO i_result;
commit;
END GET_IID;开始的错误是:不知道为什么字段类型后面不可以加括号,加了就错,不过无所谓了,能用就行。