ホームページ >データベース >mysql チュートリアル >動的に渡されるユーザー名を使用して SQL ログインを作成するにはどうすればよいですか?
テナント設定を管理するカスタム ストアド プロシージャを作成しようとして、Justin は複雑な問題に遭遇しました。ハードル: CREATE LOGIN ステートメントでパラメータ化されたユーザー名を利用できないこと。このタスクの一見単純な性質にもかかわらず、不可解な SQL エラー メッセージは当惑させるものであることが判明しました。
この問題は、CREATE LOGIN がパラメータ化された値ではなくリテラルのユーザー名を期待しているという事実に起因しています。この制限を回避するために、Justin は動的 SQL 手法を使用できます。
Justin は、次のように DECLARE ステートメントと EXEC ステートメントを使用して CREATE LOGIN ステートメントを動的に構築できます。
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
このコード内:
CREATE LOGIN ステートメントをラップすることにより、 EXEC 内で、Justin は実行時にパラメータ化された値をステートメントに効果的に渡すことができ、「'@username' 付近の不正な構文」を解決できます。 error.
パラメータではなくリテラル値を必要とする SQL ステートメントを操作する場合、動的 SQL を使用すると解決策が得られます。この手法を採用することで、Justin はストアド プロシージャ内でテナント ログインを自信を持って作成できるようになり、テナント管理プロセスを自動化し、SaaS データベース管理を合理化できるようになりました。
以上が動的に渡されるユーザー名を使用して SQL ログインを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。