may*_*lle 12 sql sql-server exists
假设我有一个存储在这样的变量中的查询(它实际上是动态填充的,而且更复杂,但这是出于演示目的):
DECLARE @Query VARCHAR(1000) = 'SELECT * FROM dbo.MyTable'
Run Code Online (Sandbox Code Playgroud)
有没有办法检查查询是否会返回任何结果?像这样的东西,但这不起作用:
IF EXISTS (@Query)
BEGIN
-- do something
END
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法是将结果放在临时表中,然后从中查询,但这并不理想,因为动态查询中的列可能会有所不同,我真的不需要临时表除了检查是否会返回某些行之外的任何原因.有没有更好的办法?
Pரத*_*ீப் 17
尝试执行Dynamic query
和使用@@RowCount
以查找行的存在.
DECLARE @Query NVARCHAR(1000) = 'SELECT * FROM [dbo].[Mytable]',
@rowcnt INT
EXEC Sp_executesql @query
SELECT @rowcnt = @@ROWCOUNT
IF @rowcnt > 0
BEGIN
PRINT 'row present'
END
Run Code Online (Sandbox Code Playgroud)
dar*_*rio 11
试试这个:
DECLARE @Query NVARCHAR(1000) = 'SELECT @C = COUNT(*) FROM dbo.MyTable'
DECLARE @Count AS INT
EXEC sp_executesql @Query, N'@C INT OUTPUT', @C=@Count OUTPUT
IF (@Count > 0)
BEGIN
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24826 次 |
最近记录: |