【发布时间】:2015-01-23 06:18:57
【问题描述】:
我有包含isactive、hindi、english、...列的语言表。
我正在创建一个用于插入新数据的存储过程,如下所示:
create proc USP_Insertdata
@lang varchar(20),
@data nvarchar(50)
as
begin
EXEC(N'insert into language(@lang, isactive) values(@data, 'true')')
end
在执行中遇到问题
【问题讨论】:
-
@lang 是可变的,我认为这会导致您出现问题。一种解决方法可以是 Switch 机箱。在 CASE 中为每种语言编写不同的查询,并根据用户的输入应用切换。
-
这里不需要动态SQL。只需创建一个 IF .. ELSE 分支。通过为每种语言指定不同的列名。
-
@VishalGajjar:说真的?如果您必须支持more than a couple cultures,您将拥有一棵巨大的
IF .. ELSE树。如果我无法更改数据库设计,动态 SQL 绝对是我在这种情况下的首选。
标签: sql sql-server