我正在使用Microsoft SQL Server 2012.我想在存储过程中设置一个布尔值。如果某个select查询返回的行数多于零,我想将该值设置为true。
Declare @ShowQuotingTool as bit
(select count(*) from tblAgentsLicensedState where AgentCode = '016893' and StateCode in ('AZ','GA','IA', 'TN', 'SC', 'KS', 'MI' ,'NC', 'UT')) > 0;
如何根据@ShowQuotingTool
查询将select
设置为true或false?我收到错误Incorrect syntax near ">"
。
答案 0 :(得分:3)
您只需将count > 0
分配给计数查询即可。这是基于以下事实:任何bit
都会将@ShowQuotingTool
变量count = 0
设置为true,而Declare @ShowQuotingTool as bit
SELECT @ShowQuotingTool = (select count(*) from tblAgentsLicensedState where AgentCode = '016893' and StateCode in ('AZ','GA','IA', 'TN', 'SC', 'KS', 'MI' ,'NC', 'UT'))
会将其设置为false
EXISTS
您最好使用COUNT
,其性能优于上述IF EXISTS(select * from tblAgentsLicensedState where AgentCode = '016893' and StateCode in ('AZ','GA','IA', 'TN', 'SC', 'KS', 'MI' ,'NC', 'UT'))
SET @ShowQuotingTool = 1
ELSE
SET @ShowQuotingTool = 0
查询。
$result = mysql_query( "SELECT DATE_FORMAT( date_created, '%d/%m/%Y' ) as date_created, DATE_FORMAT( date_edited, '%d/%m/%Y' ) as date_edited FROM news" );
while( $row = mysql_fetch_array( $result ) ) {
//print as-it-is
}
答案 1 :(得分:1)
美好的一天,
如果这不是您想要的,请发布DDL + DML。在任何情况下,请记住下次发布DDL + DML(查询以创建相关表格并插入一些示例数据,以便为我们提供重现问题的工具)。
回到您的问题:
如果您的SP返回select查询(或任何DML查询)的结果,则表示您需要此查询按原样执行。 在结果上使用COUNT函数的想法意味着您执行另一个查询,这不是逻辑操作,因为我们已经在结果的标题中包含了信息。
默认情况下,如果您注意到每次在SSMS中执行查询时,都会获得有关行数的信息:“(x行受影响)”。无需使用其他查询。
如果您正在使用您开发的外部应用程序,并且您的SP不使用“SET NOCOUNT ON”,则此信息将从服务器返回: - )
您可以在此处查看示例: https://msdn.microsoft.com/en-us/library/ms171921.aspx?f=255&MSPPError=-2147217396