比如CREATE PROCEDURE [dbo].[SP_Test] 
(
 @Email_Type as nvarchar(20)
)
ASSELECT Email_Type, Email_Addr
FROM Tab_Email
WHERE (Email_Type = @Email_Type)GO因为@Email_Type的内容是中文,SQL语句不识别,所以查询结果为空。
怎么做到WHERE (Email_Type = N@Email_Type)的效果

解决方案 »

  1.   

    中文不能识别么?
    是不是你的参数长度或类型不对?或者用like试下
      

  2.   

    SELECT Email_Type, Email_Addr
    FROM Tab_Email
    WHERE (Email_Type = @Email_Type)
    =>
    exec('SELECT Email_Type, Email_Addr
    FROM Tab_Email
    WHERE (Email_Type =N'''+@Email_Type+''')')?
      

  3.   

    参数类型是 nvarchar,长度没问题。感觉exec()比较低效存储过程这么麻烦,还不如直接把SQL语句写在程序中
      

  4.   

    SELECT Email_Type, Email_Addr FROM Tab_Email
    WHERE (Email_Type = N'''' + @Email_Type + N'''')
      

  5.   

    --存储过程这么麻烦,还不如直接把SQL语句写在程序中通常我们是用proc进行处理的,因为速度快,也安全,也好维护
      

  6.   

    to hellowork(一两清风) 
    你的方法不行,连@Email_Type是英文的也无法查询出结果to free_pop2k(每天进步一点点,日子就会好一点...)
    不可否认proc的作用,但就我的这个问题,好像proc解决不了