在存储过程结果中添加默认列

时间:2013-07-25 05:39:19

标签: sql-server

我有一个这样的存储过程:

ALTER procedure [dbo].[fetchkey]
@carid nvarchar(50) =null
as
begin
 select t.TBarcode, t.Status 
from Transaction_tbl t 
 where t.TBarcode=@carid
end

我的输出:

TBarcode             Status
57173621345          3

我想得到这样的输出:

TBarcode        location          Status
-----------------------------------------
57173621345     deliverd         3

我需要位置列才能显示始终只发送。 那我该怎么做呢?我需要使用某个功能还是有任何简单的方法?

2 个答案:

答案 0 :(得分:2)

将SP中的选择更改为

select  t.TBarcode, 
        'delivered' location,
        t.Status 
from    Transaction_tbl t 
where   t.TBarcode=@carid

来自SELECT Clause (Transact-SQL)

您可以看到语法如下

SELECT [ ALL | DISTINCT ]
[ TOP ( expression ) [ PERCENT ] [ WITH TIES ] ] 
<select_list> 
<select_list> ::= 
    { 
      * 
      | { table_name | view_name | table_alias }.* 
      | {
          [ { table_name | view_name | table_alias }. ]
               { column_name | $IDENTITY | $ROWGUID } 
          | udt_column_name [ { . | :: } { { property_name | field_name } 
            | method_name ( argument [ ,...n] ) } ]
          | expression
          [ [ AS ] column_alias ] 
         }
      | column_alias = expression 
    } [ ,...n ] 

上述表达式定义为

  

是常量,函数,列名,常量的任意组合,   和由运算符或运算符或子查询连接的函数。

答案 1 :(得分:0)

试试这个 -

ALTER PROCEDURE [dbo].[fetchkey] 

@carid NVARCHAR(50) = NULL

AS BEGIN

     SELECT
           t.TBarcode
         , Location = 'delivered' 
         , t.[status]
     FROM dbo.Transaction_tbl t
     WHERE t.TBarcode = ISNULL(@carid, T.TBarcode)

END