2017-06-29 6 views
0

ロジックは、私がこのストアドプロシージャで作業C.SQLスカラー変数

にするために使用しています何と比較していないようだと、私はSQLでのスカラ変数を理解する問題があります。

CREATE procedure [dbo].[sp_GetUserNameByLast4SSNandDOB] 
    @SSN varchar(4) 
    @DOB date 
AS 
    SELECT 
     User_FirstName + ' ' + User_LastName AS EmployeeName 
    FROM 
     tblUsers m 
    WHERE 
     RIGHT(m.User_SSN, 4) = @SSN 
     AND m.User_DOB = @DOB 

変数を渡して、返される1つの行を返します。しかし、変数は常にスカラーであると思われます。スカラーを避ける方法を理解する助けがあれば、大歓迎です。ありがとうございました!

+2

使用しているデータベースで質問にタグを付けます。 –

+0

あなたは、SQLとCが2つの異なるシステムである言語の性質について考えることができます.Cはプログラミング言語であり、SQLはデータベース言語でデータベースはそれ自体の構造を持っていますが、すべてがここで定義されなければならないので、スカラー以外の変数に対応できるSQLは表示されません。 – maSTAShuFu

+0

** SQL Server **のサイドノート:** sp_'を使用しないでください**ストアドプロシージャの接頭辞。マイクロソフトは、[*ストアドプロシージャの名前付け*を参照してください](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx)、およびあなたはいつか名前衝突のリスクを将来実行します。 [ストアドプロシージャのパフォーマンスにも悪い](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)単に 'sp_'を避け、他の何かを接頭辞として使うのが最善です。 –

答えて

0

あなたの問題を正しく理解しているかどうかわからない場合は、作成しないでください。変数間、

CREATE procedure [dbo].[sp_GetUserNameByLast4SSNandDOB] 
@SSN varchar(4), 
@DOB date 
as 
Select User_FirstName+' '+User_LastName as EmployeeName from tblUsers m 
where RIGHT(m.User_SSN,4)= @SSN and m.User_DOB= @DOB 

ちょうど注意:

私は1つのエラーを見ることができます。

+0

私たちはすべてエラーを知っています...主な質問はスカラー変数についてです – maSTAShuFu

+0

うわー。私のエラーはコンマのように小さかった。私はこれを見て、なぜロジックが音のように見えたのかを理解しようとしていましたが、うまくいきませんでした。 はい。スカラーがどのように機能するかについて学ぶことは、私の頭を包み込むことを試みてきたことです。 –

+0

残念ながら私はまだスカラー変数に関しては暗闇の中にいますが、私が気づいた問題を指摘したと思っています。 – GoodDisplayName

関連する問題