SQL Views - no variables?

前端 未结 8 1873
北荒
北荒 2020-12-04 17:31

Is it possible to declare a variable within a View? For example:

Declare @SomeVar varchar(8) = \'something\'

gives me the syntax error:

相关标签:
8条回答
  • 2020-12-04 17:55

    You are correct. Local variables are not allowed in a VIEW.

    You can set a local variable in a table valued function, which returns a result set (like a view does.)

    http://msdn.microsoft.com/en-us/library/ms191165.aspx

    e.g.

    CREATE FUNCTION dbo.udf_foo()
    RETURNS @ret TABLE (col INT)
    AS
    BEGIN
      DECLARE @myvar INT;
      SELECT @myvar = 1;
      INSERT INTO @ret SELECT @myvar;
      RETURN;
    END;
    GO
    SELECT * FROM dbo.udf_foo();
    GO
    
    0 讨论(0)
  • 2020-12-04 17:56

    @datenstation had the correct concept. Here is a working example that uses CTE to cache variable's names:

    CREATE VIEW vwImportant_Users AS
    WITH params AS (
        SELECT 
        varType='%Admin%', 
        varMinStatus=1)
    SELECT status, name 
        FROM sys.sysusers, params
        WHERE status > varMinStatus OR name LIKE varType
    
    SELECT * FROM vwImportant_Users
    

    also via JOIN

    WITH params AS ( SELECT varType='%Admin%', varMinStatus=1)
    SELECT status, name 
        FROM sys.sysusers INNER JOIN params ON 1=1
        WHERE status > varMinStatus OR name LIKE varType
    

    also via CROSS APPLY

    WITH params AS ( SELECT varType='%Admin%', varMinStatus=1)
    SELECT status, name 
        FROM sys.sysusers CROSS APPLY params
        WHERE status > varMinStatus OR name LIKE varType
    
    0 讨论(0)
提交回复
热议问题