sql >> データベース >  >> RDS >> Sqlserver

関数内から一時テーブルにアクセスできません

    ユーザー定義のテーブルタイプを使用して問題を解決できます。

    のようなテーブル変数を作成するだけです
    CREATE TYPE [dbo].[yourTypeName] AS TABLE(
        [columeName1] [int] NULL,
        [columeName2] [varchar](500) NULL,
        [columeName3] [varchar](1000) NULL
    )
    GO
    

    のように関数でこのテーブル変数を宣言できます
        CREATE FUNCTION [dbo].[yourFunctionName] 
    ( 
        @fnVariable1 INT ,
        @yourTypeNameVariable yourTypeName READONLY
    ) 
    RETURNS VARCHAR(8000) 
    AS 
    BEGIN 
    
        SELECT .................
            FROM @yourTypeNameVariable 
            WHERE ........
        RETURN @r 
    END 
    

    プロシージャで、次のようにテーブルタイプを宣言できます

    DECLARE @yourTypeNamevaribale AS yourTypeName 
    

    そして、

    のようにこのテーブルに値を挿入できます
    insert into @yourTypeNamevaribale (col,col,..)values(val,val,..)
    

    これを次のような関数に渡します

    dbo.yourFunctionName(fnVariable1 ,@yourTypeNamevaribale )
    

    この方法で行ってください、ありがとう



    1. SQLiteの表示テーブル

    2. SQL Server:合計が値と一致する最新の行を選択します

    3. REST-apiを介したメッセージング用にphpmyadminとSQLを設定するにはどうすればよいですか?

    4. PHP Webアプリケーション:mysqlデータベース設計のベストプラクティスに関する質問