1

以下のストアド プロシージャは、期待どおりに正しく動作します。「FleetBarcode」が存在する場合は True を返し、存在しない場合は False を返します。

ただし、それを返すと、次のように表示されます

(no column name)
     True

私の問題は、「列名なし」の部分に列名を定義する必要があることです。これまでのところ、「True」フィールドにエイリアスを与える以下の方法を試しました。

お時間をいただきありがとうございます。

ALTER proc [dbo].[usp_getjobs]

@barcode as nvarchar(20)


as
SELECT CASE WHEN EXISTS(
SELECT 
[FleetBarcode],
[Deleted]

FROM w_DeliveryItems


 WHERE FleetBarcode = @barcode
 AND Deleted != 1
)
THEN (SELECT  'True'  'Exist')
ELSE (SELECT 'False' 'Exist')


END
4

3 に答える 3

5

使用する

ALTER PROC [dbo].[usp_getjobs] @barcode AS NVARCHAR(20)
AS
    SELECT CASE
             WHEN EXISTS(SELECT [FleetBarcode],
                                [Deleted]
                         FROM   w_DeliveryItems
                         WHERE  FleetBarcode = @barcode
                                AND Deleted != 1) THEN 'True'
             ELSE 'False'
           END AS [Exist]

エイリアスは外側にある必要がありますSELECT

また、列のエイリアシングでは、一重引用符よりも角括弧を使用する方が一般的です。

于 2013-10-30T16:47:02.467 に答える
3

/ブロックSELECT内の sを取り除き、列に名前を付けるために使用します。THENELSEAS

SELECT CASE WHEN EXISTS(
...
THEN 'True')
ELSE 'False')
END AS [Exist]  --<-- add name here
于 2013-10-30T16:47:11.750 に答える
1
ALTER proc [dbo].[usp_getjobs]

@barcode as nvarchar(20)


as
SELECT CASE WHEN EXISTS(
SELECT 
[FleetBarcode],
[Deleted]

FROM w_DeliveryItems


 WHERE FleetBarcode = @barcode
 AND Deleted != 1
)
THEN (SELECT  'True'  'Exist')
ELSE (SELECT 'False' 'Exist')


END AS [Your Column Name]
于 2013-10-30T16:47:29.003 に答える