2011-12-01 47 views
0

我有一个SQL查询,我需要插入一个字符串变量,但我收到了错误。带有字符串变量的SQL INSERT查询

下面是我的SQL INSERT查询:

Insert into User(Employee, Name, Address, Role, Action) 
Select distinct ur1.Employee, ur1.Name, ur1.Address, ur1.Role, ['%" + action + "%'] as [Action] FROM UserRoles ur1)"; 

string action="insert delete query in database" 

我想插入action到我INSERT发言,但我获得了大量的语法错误。

任何人都可以帮我查询吗?

非常感谢您的帮助。

+0

请告诉我们错误。如果你不想引擎抱怨,也许你还需要使用'FROM UserRoles ur1''因为ur1.Employee,...不存在。 – Marco

+0

你想为这个sql,如果是这样的话,哪个DBMS(Sql Server,ACcess Oracle等),还是你想要cosde,如果是这样的话。 –

回答

1
Insert into User(Employee, Name, Address, Role, Action) 
Select distinct ur1.Employee, ur1.Name, ur1.Address, ur1.Role,'insert delete query in database' 
FROM UserRoles ur1; 
+0

'ur1.Employee,... does not exist'查看@Marco的评论 – FosterZ

+0

正如我已经在我的帖子评论中所说的,'ur1'没有被定义;) – Marco

+0

@Zohalib哇,我没有知道你的方法可以工作。谢谢! – gymcode

1

字符串拼接的SQL运算符为||

+0

其实它是|| || –

+0

您好CodeBrikie,你是什么意思的字符串连接?我需要用'|'代替什么? – gymcode

+0

@a_horse_with_no_name thx提示。答案调整。 – tobiasbayer

1

你应该尝试

INSERT INTO User (Employee, Name, Address, Role, Action) 
SELECT DISTINCT ur1.Employee, ur1.Name, 
       ur1.Address, ur1.Role, 
       ['%insert delete query in database%'] 
FROM UserRoles ur1 
1

的一部分,你是你的串联可变action对脚本的其余部分看起来像这样串联后:

… 
    ['the string value goes here'] as [Action] 
… 

我现在要做一个疯狂的猜测,但由于方括号的存在,它看起来好像在SQL Server或Sybase上。现在,在这两种产品中,方括号中的字符序列将被认为是分隔标识符。使用示例中的括号对[Action]确实有意义,但对于脚本的['...']部分看起来毫无意义。更有可能你的意思是简单的'...',即没有方括号,它只是一个字符串常量。

另一个需要注意的事项是:在SQL语句结尾处有一个不匹配的右括号。