Con*_*eer 5 sql sql-server-2000 coldfusion-10
我的客户正在运行MS SQL Server 2000.我完成了一个项目,但我没有意识到MS SQL Server 2000将不允许选择内部插入值,从而给出错误:
Subqueries are not allowed in this context. Only scalar expressions are allowed.
Run Code Online (Sandbox Code Playgroud)
当我运行以下查询时:
insert into table_one (greeting_column, name_column)
values (
'hello',
(select column_1 from table_to where name = 'bob')
)
Run Code Online (Sandbox Code Playgroud)
我从coldfusion10调用此查询.通过替换调用查询的select语句并将结果存储在coldFusion列表变量中,然后迭代通过将CF列表变量的内容插入其各自记录的循环,我已经实现了利用coldFusion10解决此问题的解决方案,但是这需要更多的处理,然后是一个简单的SQL语句.我已经在另一个网页上找到了解决这个问题的解决方案(是的,我知道做'select*'是不好的做法,这只是一个例子):
CREATE PROC whatever
@REC int,
@ChangedIP varchar(15),
@ChangedBY varchar(30)
AS
INSERT INTO table_LOG
SELECT *, GETDATE(), @ChangedID, @ChangedBy FROM table WHERE record = @REC
Run Code Online (Sandbox Code Playgroud)
但我不认为coldFusion会在查询中允许Transact-SQL变量(将在周末之后尝试)有没有办法重写不使用Transact-SQL变量?
dno*_*eth 20
我没有Microsoft SQL Server 2000,但这也应该有效,只需用SELECT替换VALUES并删除括号:
insert into table_one (greeting_column, name_column)
SELECT
'hello',
(select column_1 from table_to where name = 'bob')
Run Code Online (Sandbox Code Playgroud)
我不再有 SQL Server 2000 可供测试,但我不知道为什么它不允许您的查询,AFAIK,它完全有效。我怀疑是 Coldfusion 或者您的访问提供商阻止了它。
无论如何,我确信以下内容是有效的:
insert into table_one (greeting_column, name_column)
Select 'hello',
column_1
from table_to
where name = 'bob'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18839 次 |
| 最近记录: |