クエリの結果に偽の列を挿入する必要があります。これは、テーブル値関数の戻り値です。この列のデータ型はunique-identifierである必要があります。最良の方法(私は思う...)はnewid()
関数を使うことです。問題は、newid()
このタイプの関数内では使用できないことです。
Invalid use of side-effecting or time-dependent operator in 'newid()' within a function.
クエリの結果に偽の列を挿入する必要があります。これは、テーブル値関数の戻り値です。この列のデータ型はunique-identifierである必要があります。最良の方法(私は思う...)はnewid()
関数を使うことです。問題は、newid()
このタイプの関数内では使用できないことです。
Invalid use of side-effecting or time-dependent operator in 'newid()' within a function.
NEWID() をパラメーターとして関数に渡すことができます。
CREATE FUNCTION SOMEIDFUNCTION
(
@NEWID1 as varchar(36), @NEWID2 as varchar(36)
)
RETURNS varchar(18)
AS
BEGIN
-- Do something --
DECLARE @SFID varchar(18)
SELECT @SFID = 'DYN0000000' + LOWER(LEFT(@NEWID1,4)) + LEFT(@NEWID2,4)
RETURN @SFID
END
GO
このように関数を呼び出します。
SELECT dbo.SOMEIDFUNCTION(NewID(),NewID())
代わりにデフォルトとして使用してください
create table test(id uniqueidentifier default newsequentialid(),id2 int)
insert test(id2) values(1)
select * from test
注意: newid () はシーケンシャルではないため、ページ分割が発生するため、newid() の代わりに newsequentialid() を使用しました。
ROW_NUMBER 関数を使用できます。
SELECT
(ROW_NUMBER() OVER (ORDER BY recordID) ) as RowNumber ,
recordID,
fieldBla1
FROM tableName
詳細については、http://msdn.microsoft.com/pt-br/library/ms186734.aspxを参照してください。