从哪里选择@variable

时间:2014-08-26 09:23:26

标签: sql-server

我的表格“q_rank”有2列Q_ID和KTTH

q_id    KTTH
1        1
2        1

我创建了这个程序

 CREATE PROCEDURE [dbo].[test] 
    @Param1    varchar(10)
AS
BEGIN
DECLARE @query nvarchar(MAX);

    SET @query= (SELECT  @Param1 FROM [Exam].[dbo].[q_rank] a where q_id=2)
    SELECT @query

END

但是当我

EXEC test 'KTTH'

结果是KTTH,但我希望它是1。 请帮帮我

2 个答案:

答案 0 :(得分:1)

尝试使用sp_executesql

DECLARE @outval tinyint;

SET @query= 'SELECT @outval = ' + @Param1 + ' FROM [Exam].[dbo].[q_rank] a where q_id=2';
sp_executesql @query, N'@outval tinyint', @outval = @outval output;

return @outval;

答案 1 :(得分:0)

您需要动态SQL

CREATE PROCEDURE [dbo].[test] 
    @Param1    varchar(10)
AS
BEGIN
DECLARE @query nvarchar(MAX);

    SET @query= 'SELECT ' + @Param1  + ' FROM [Exam].[dbo].[q_rank] a where q_id=2'
    exec  (@query)

END