SQL中存储过程变量长度

已下是一个测试表:

if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[test_data] ' and   OBJECTPROPERTY (id, N ' IsUserTable ' =   1 )
drop   table   [ dbo ] . [ test_data ]
GO

CREATE   TABLE   [ dbo ] . [ test_data ]  (
    
[ s_id ]   [ bigint ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ s_title ]   [ nvarchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ s_content ]   [ ntext ]  COLLATE Chinese_PRC_CI_AS  NULL  
ON   [ PRIMARY ]  TEXTIMAGE_ON  [ PRIMARY ]
GO
1、相关存储过程,功能为指定三个参数,@s_title 给出了变量的长度,如下:

CREATE   PROCEDURE  testUpdate 
@s_title   nvarchar ( 50 ),
@s_content   ntext ,
@s_id   int
AS
  
UPDATE  socut_Data  SET  s_title = @s_title ,s_content = @s_content   WHERE  s_id = @s_id
GO

如果给出三个参数为:
   set  @s_title='测试数据'
   set  @s_content='测试数据结果正常'
   set  @s_id=1

表最终结果为:
  s_id           s_titel         s_content
   1                测试数据    测试数据结果正常
2、相关存储过程,功能为指定三个参数,@s_title 没有给出了变量的长度,如下:
CREATE   PROCEDURE  testUpdate 
@s_title   nvarchar ,
@s_content   ntext ,
@s_id   int
AS
  
UPDATE  socut_Data  SET  s_title = @s_title ,s_content = @s_content   WHERE  s_id = @s_id
GO

如果给出三个参数为:
   set  @s_title='测试数据'
   set  @s_content='测试数据结果不正常'
   set  @s_id=1

表最终结果为:
  s_id           s_titel         s_content
   1                测                测试数据结果不正常

 

你可能感兴趣的:(sql,测试,table,null,存储,Go)