2013-12-12 41 views
1

我想創建一個存儲過程中使用的數據dbo.Terms「創建一個存儲過程中的表

CREATE PROCEDURE dbo.terms 
     @Term_en      NVARCHAR(50) = NULL , 
     @Createdate     DATETIME  = NULL , 
     @Writer      NVARCHAR(50) = NULL , 
     @Term_Subdomain    NVARCHAR(50) = NULL 
AS 
BEGIN 
    SET NOCOUNT ON 

    INSERT INTO dbo.terms 
      (     
      Term_en      , 
      Createdate     , 
      Writer      , 
      Term_Subdomain     
     ) 
    VALUES 
      ( 
      @Term_en = 'Cat'    , 
      @Createdate = '2013-12-12'  , 
      @Writer   = 'Fadi'   , 
      @Term_Subdomain = 'English'      
     ) 

END 

GO 

插入新行不過是插入一個新的數據在這裏,表示我的錯誤( @Term_en ='貓')不正確的語法 任何幫助?

+3

什麼是你真正想要做有執行? –

回答

5

我認爲你想要插入數值貓等到表中;要做到這一點,您需要使用程序變量中的值。我不會稱你的程序與你的表名相同,它會引起各種混淆;你可以找到(從Adventureworks或嬰兒牀)命名標準的一些好的資源

CREATE PROCEDURE dbo.terms 
     @Term_en      NVARCHAR(50) = NULL , 
     @Createdate     DATETIME  = NULL , 
     @Writer      NVARCHAR(50) = NULL , 
     @Term_Subdomain    NVARCHAR(50) = NULL 
AS 
BEGIN 
    SET NOCOUNT ON 

    INSERT INTO dbo.terms 
      (     
      Term_en      , 
      Createdate     , 
      Writer      , 
      Term_Subdomain     
     ) 
    VALUES 
      ( 
      @Term_en, 
      @Createdate, 
      @Writer, 
      @Term_Subdomain 
     ) 

END 

GO 

,並測試它

exec dbo.terms 
    @Term_en = 'Cat'    , 
    @Createdate = '2013-12-12'  , 
    @Writer   = 'Fadi'   , 
    @Term_Subdomain = 'English' 
+0

@MartinSmith我認爲這取決於您如何從應用程序中調用您的過程,如果在調用過程時始終能夠通過所有參數,則不需要默認值。如果您的代碼調用過程並且有時沒有值傳遞所有變量,那麼您確實需要的參數爲null,否則過程將期望您將null傳遞給變量。 – u07ch

+0

是的,完全正確。 –

+0

非常感謝,現在。任何人都可以告訴我如何創建一個觸發器,當在表'dbo.terms'中插入任何新行時,在另一個表中添加行? –

0

下面是如何設置的默認值在PROC參數:

CREATE PROCEDURE dbo.terms 
     @Term_en  NVARCHAR(50) = 'Cat', 
     @Createdate  DATETIME  = '2013-12-12', 
     @Writer   NVARCHAR(50) = 'Fadi', 
     @Term_Subdomain NVARCHAR(50) = 'English' 
AS 
BEGIN 
    SET NOCOUNT ON 

    INSERT INTO dbo.terms 
      (     
      Term_en      , 
      Createdate     , 
      Writer      , 
      Term_Subdomain     
     ) 
    VALUES 
      ( 
      @Term_en, 
      @Createdate, 
      @Writer, 
      @Term_Subdomain      
     ) 

END 

GO 
0

您的代碼不正確。 把價值放入插入部分。那麼應該在執行部分價值

CREATE PROCEDURE dbo.terms  
    @Term_en      NVARCHAR(50) = NULL ,  
    @Createdate     DATETIME  = NULL ,  
    @Writer      NVARCHAR(50) = NULL ,  
    @Term_Subdomain    NVARCHAR(50) = NULL 
AS 
BEGIN 
SET NOCOUNT ON 
INSERT INTO dbo.terms 
     (     
     Term_en, 
     Createdate, 
     Writer, 
     Term_Subdomain     
    ) 

VALUES 
     ( 
     @Term_en , 
     @Createdate , 
     @Writer  , 
     @Term_Subdomain      
    ) 

END 

exec dbo.terms 
@Term_en = 'Cat'    , 
@Createdate = '2013-12-12'  , 
@Writer   = 'Fadi'   , 
@Term_Subdomain = 'English' 

GO