CREATE TABLE CODE_ID2 ( c_col_name nvarchar(50), n_id bigint )
go
CREATE FUNCTION [dbo].[getId]
(
@v_col_name nvarchar(30) --字段名
)
RETURNS
bigint
AS
BEGIN
INSERT INTO sysmng.dbo.code_id2( c_col_name, n_id ) VALUES ( 'a', 1 )
RETURN 1
END报错信息:在函数内的 'INSERT' 中对带副作用的或依赖于时间的运算符的使用无效。把 那条 INSERT语句注释掉就可以, 但是单独执行那条INSERT 语句是可以的
微软真的很折腾人啊, 函数还分这么多种,而且没有 rowtype的定义赋值方式
go
CREATE FUNCTION [dbo].[getId]
(
@v_col_name nvarchar(30) --字段名
)
RETURNS
bigint
AS
BEGIN
INSERT INTO sysmng.dbo.code_id2( c_col_name, n_id ) VALUES ( 'a', 1 )
RETURN 1
END报错信息:在函数内的 'INSERT' 中对带副作用的或依赖于时间的运算符的使用无效。把 那条 INSERT语句注释掉就可以, 但是单独执行那条INSERT 语句是可以的
微软真的很折腾人啊, 函数还分这么多种,而且没有 rowtype的定义赋值方式
有输入和输出参数CREATE TABLE CODE_ID2 ( c_col_name nvarchar(50), n_id bigint )
go
CREATE proc GetID
(
@v_col_name nvarchar(30), --字段名
@Return_id bigint output
)AS
BEGIN
INSERT INTO sysmng.dbo.code_id2( c_col_name, n_id ) VALUES ( 'a', 1 )
select @Return_id = 1
END--
只有函数和扩展存储过程才能从函数内部执行。我估计这次真的是没有办法了, 其实我就是想把 ORACLE里面的SEQUENCE移植到SQL SERVER来
但是好像比较烦`~~