打扰一下,如果英语不是很好。
我开始学习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
答案 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