存储过程教程

时间:2015-06-12 08:24:04

标签: sql visual-studio-2013

打扰一下,如果英语不是很好。

我开始学习sql语言,我猜其中一个基础知识有困难。

我正在我的visual studio sql项目中创建一个表:

CREATE TABLE [dbo].[Table]
(
[Id] INT NOT NULL PRIMARY KEY, 
[w] VARCHAR(50) NULL, 
[p] VARCHAR(50) NULL, 
[g] VARCHAR(50) NULL, 
[m] VARCHAR(50) NULL
)

我认为我做对了,每个条目应该存储4个字符串。

现在,下一部分是我想创建一个像这样的存储过程

procedure(string, letter)

字符串是表格中m字段的值,字母是3个字母(w,g,p)之一,我希望它在表格中找到m条目并显示wg或p字段的值

所以,如果我在m字段中有Abra的条目,在g字段中有cadabra,并且我写了程序(Abra,g),我希望它向我显示cadabra。

修改

这会有用吗?

Create  PROCEDURE p(

 @n_m VARCHAR(50)
 @o_j CHAR

 )
 AS
 BEGIN

 SELECT w FROM Table WHERE m=@n_m AND @o_j='w'

 SELECT p FROM Table WHERE m=@n_m AND @o_j='p'

 SELECT g FROM Table WHERE m=@n_m AND @o_j='g'
 END

1 个答案:

答案 0 :(得分:0)

您可以像这样创建存储过程:

CREATE PROC spProcedure
    @n_m VARCHAR(50),
    @o_j CHAR
AS
BEGIN
    SELECT
        CASE @o_j
            WHEN 'w' THEN w
            WHEN 'p' THEN p
            WHEN 'g' THEN G
        END
    FROM [dbo].[Table]
    WHERE [m] = @n_m
END

插入以下行后:

INSERT INTO [dbo].[Table] ([Id], [g], [m]) VALUES (1, 'cadabra', 'Abra');

..程序按以下方式执行程序时输出'cadabra':

EXEC spProcedure @n_m = 'Abra', @o_j = 'g'

我创建的过程只使用一个SELECT语句。如您所见,SELECT语句包含CASE表达式。 CASE表达式检查@o_j参数是'w','p'还是'g',当值为'w'时,CASE将输出SELECT语句中表的w列。 WHERE语句确保SELECT语句中的m值等于@n_m。

您可以在此处详细了解CASE表达式:https://msdn.microsoft.com/en-us/library/ms181765.aspx