2012-12-01 29 views
0

我剛剛開始使用SQL Server,我想根據另一列(自動且兩列都在同一個表中)設置我的表格的一列。我已經寫了這樣的功能:使用單元格內容作爲SQL Server查詢中的函數的參數

ALTER FUNCTION [dbo].[FloorNameConvertor] 
(
    @Number int 
)  
RETURNS nchar(10) 
AS 
BEGIN 
RETURN 
(  CASE 
      WHEN @Number/100=1 THEN 'x' 
      WHEN @Number/100=2 THEN 'y' 
      ELSE 'w' 
     END 
) 
END 

和我在我的列屬性的默認值中使用它。我有問題發送一個單元格的值作爲參數(我不能選擇一個單元格)?

謝謝

回答

0

您不能在默認約束中使用其他列名稱。您可以使用INSTEAD OF INSERT觸發器或使用計算列來處理它(儘管如此)。

+0

謝謝你的回覆。你會給我任何有用的鏈接或參考。並且不可能在SQL中選擇特定的單元格(而不是選擇所有列)? –

+0

@MohammadYousefi:可能在不同的上下文中:例如,'create table ....(field1 int,field2 as [dbo]。[FloorNameConvertor](field1))' - 計算列。然而,如果你用'... field2 nchar(10)default [dbo]。[FloorNameConvertor](field1)''試試''你會得到'名字'field1'在這個上下文中是不允許的,有效表達式是常量,常量表達式和(在某些情況下)變量。列名是不允許的。「錯誤。鏈接:創建表中計算列的示例 - http://msdn.microsoft.com/zh-cn/library/ms174979(v=sql.105).aspx – a1ex07

+0

而不是觸發器 - http://msdn.microsoft.com /en-us/library/ms175521(v=sql.105).aspx – a1ex07

相關問題