JBu*_*ace 3 sql t-sql sql-server syntax
我可以访问 Access 数据库,并且在该数据库中包含填充了 TSQL 查询的字段。这些查询由服务器上的 T-SQL 处理。因此,当我编写这些 SQL 查询并将它们放入一个字段以供终端服务器使用时,我无法验证语法/等。我可以在该 Access 数据库中创建一个临时查询,但它不是相同的查询语言。例如,Access 会正确使用,IIF但 TSQL 不会(而是CASE)。
我无法使用 TSQL 直接访问此服务器,有什么方法可以验证我的 T-SQL 查询(语法等)?也许是在线网络工具?
我应该注意我无权访问 SQL 服务器。只有 Access db 和那个。我知道它不会验证表名等,我不希望它。
实际上,MattMc3 的答案和 FremenFreedom 的答案的组合应该有效。
下载 SQL Express。
然后,声明以下存储过程:
create procedure IsValidSQL (@sql varchar(max)) as
begin
begin try
set @sql = 'set parseonly on;'+@sql;
exec(@sql);
end try
begin catch
return(1);
end catch;
return(0);
end; -- IsValidSQL
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法对其进行测试:
declare @retval int;
exec @retval = IsValidSQL 'select iif(val, 0, 1) from t';
select @retval
Run Code Online (Sandbox Code Playgroud)
或与:
declare @retval int;
exec @retval = IsValidSQL 'select val from t';
select @retval
Run Code Online (Sandbox Code Playgroud)
注意:这将捕获 IIF() 问题。它不会捕获与表结构或列结构相关的任何内容。您需要为此使用架构和稍微不同的方法(“从 () t 中选择顶部 0 *”) 可以做到。
您也许可以在线使用 SQL Fiddle 做一些事情。但是,我建议拥有数据库的本地副本。
| 归档时间: |
|
| 查看次数: |
11789 次 |
| 最近记录: |