私は一意のID番号を取得しようとしていますが、これを行うには次のSQL Server関数を書きました。私は現在の管理者のIDを関数に与え、それは左の最初の数字になります。今私はそれが非常にユニークな番号を返すようにしたい。私は複数を使用しているので、一致するべきではありません。私はテーブルorderdetailstbにorderidがないときにそれをしたい。それがあれば+1する必要があります。複数SQL Server関数でエラーが返される
USE [ResturantManagementSystem]
GO
/****** Object: UserDefinedFunction [dbo].[we] Script Date: 11/11/2016 11:48:59 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create FUNCTION [dbo].[UniqueOrderId] (@currentAdminid int)
RETURNS int
AS BEGIN
declare @UniqueOrderId int
if (select orderid from OrderDetailsTB) is null
return (select concat(left(@currentAdminid,1),CONVERT(int,getdate(),112),right('1',1)) from Admin)
else
if
(select max(CONVERT(int,getdate(),112)) from OrderDetailsTB)>CONVERT(int,getdate(),112)
return (select concat(left(@currentAdminid,1),CONVERT(int,getdate(),112),right('1',1)) from Admin)
else
return (select concat(left(@currentAdminid,1),CONVERT(int,getdate(),112),right(select max(orderid)+1 from OrderDetailsTB),3) from Admin)
return @UniqueOrderId
END
問題が
return (select concat(left(@currentAdminid,1),CONVERT(int,getdate(),112),right(select max(orderid)+1 from OrderDetailsTB),3) from Admin)
エラーでその与えるエラーがキーワードの近くに不正な構文 メッセージ156、レベル15、状態1、プロシージャUniqueOrderId、ライン12
です'選択'。 Msg 102、レベル15、状態1、 プロシージャUniqueOrderId、行12 ')'の近くの構文が正しくありません。
私はそれを行うことができますし、関数を使用するのが適切かどうか、またはストアドプロシージャに移動する必要があります。
サイドノートを: '(OrderDetailsTBからmax(CONVERT(int、getdate()、112))を選択します)> CONVERT(int、g etdate()、112) 'は意味をなさない。 –
申し訳ありませんが、それは質問に対するコメントとして意味されていました。 –
まあ、私は毎日新しいコードを生成する必要があることを望んでいます。 –