2013-12-18 29 views
0

這是我的代碼:整型是不兼容唯一標識符

USE [MRC] 
GO 

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE FUNCTION [dbo].[Lookup_APN_GUID] 
(
     -- Add the parameters for the function here 
     @PN_Key int 
) 
RETURNS UNIQUEIDENTIFIER 
AS 
BEGIN 
     -- Declare the return variable here 
     DECLARE @PN_GUID UNIQUEIDENTIFIER 

     SELECT @PN_GUID = PNID 
     FROM PNEB 
     WHERE PNID = (@PN_Key) 

     RETURN @PN_GUID 
END 

我收到以下錯誤信息:

消息206,級別16,狀態2
程序Lookup_PN_GUID,操作數類型衝突: int與uniqueidentifier不兼容

我試過將int切換爲nvarchar關於標量變量聲明。仍然收到錯誤消息。 uniqueidentifierint。我很茫然。

任何想法?

+3

'select'似乎假設'PNID'是一個'uniqueidentifier'。 where子句說它是一個int。這是什麼?也許你必須把'@ PN_KEY'的聲明改爲'uniqueidentifier'。 –

+1

你可以像NCHAR(50)那樣聲明並將該參數與使用CONVERT方法轉換爲NCHAR的PNID進行比較 –

+1

你確定它是WHERE PNID = @PN_Key而不是WHERE [SOME_OTHER_COLUMN] = @PN_Key嗎?你可以發佈表'PNEB'的定義嗎? –

回答

0
USE [MRC] 
GO 

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE FUNCTION [dbo].[Lookup_APN_GUID] 
(
     -- Add the parameters for the function here 
     @PN_Key int 
) 
RETURNS UNIQUEIDENTIFIER 
AS 
BEGIN 
     -- Declare the return variable here 
     DECLARE @PN_GUID UNIQUEIDENTIFIER 
     SELECT @PN_GUID = PNID 
     FROM PNEB 
     **WHERE APNID = (@PN_Key)** 

     RETURN @PN_GUID 
END 
+0

腳本中的splats是錯誤發生的地方 –