存储过程,return 不同的列数
Stored procedures, return different number of columns
我写了一个存储过程,但它不能正常工作
CREATE OR ALTER PROCEDURE get_info
@id int = NULL,
@lang nvarchar(15) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT id,
CASE @lang
WHEN 'ru' THEN text_ru
WHEN 'en' THEN text_en
ELSE (text_en, text_ru)
END
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
它不起作用,因为大小写不能 return 2 个值。
我完美的存储过程应该是这样工作的:
exec get_info --> full table id, text_ru, text_en
exec get_info @id = 1 --> specific id, text_ru, text_en
exec get_info @lang = 'ru' --> full id, text_ru
exec get_info @id = 1, @lang = 'ru'--> specific id, text_ru, @lang
你可以这样写程序试试
CREATE OR ALTER PROCEDURE get_info
@id int = NULL,
@lang nvarchar(15) = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @lang = 'ru'
BEGIN
SELECT id,text_ru
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
IF @lang = 'en'
BEGIN
SELECT id,text_en
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
IF @lang IS NULL
BEGIN
SELECT id,text_ru,text_ru
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
END
我写了一个存储过程,但它不能正常工作
CREATE OR ALTER PROCEDURE get_info
@id int = NULL,
@lang nvarchar(15) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT id,
CASE @lang
WHEN 'ru' THEN text_ru
WHEN 'en' THEN text_en
ELSE (text_en, text_ru)
END
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
它不起作用,因为大小写不能 return 2 个值。
我完美的存储过程应该是这样工作的:
exec get_info --> full table id, text_ru, text_en
exec get_info @id = 1 --> specific id, text_ru, text_en
exec get_info @lang = 'ru' --> full id, text_ru
exec get_info @id = 1, @lang = 'ru'--> specific id, text_ru, @lang
你可以这样写程序试试
CREATE OR ALTER PROCEDURE get_info
@id int = NULL,
@lang nvarchar(15) = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @lang = 'ru'
BEGIN
SELECT id,text_ru
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
IF @lang = 'en'
BEGIN
SELECT id,text_en
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
IF @lang IS NULL
BEGIN
SELECT id,text_ru,text_ru
FROM task_text
WHERE (@id IS NULL OR id = @id);
END
END