我在SQL Server中有一个存储过程。我希望在传递null时设置默认值;否则,使用传递的值。但是,我不确定我的代码是否反映了我想要的行为。如果没有,我该怎么办?
CREATE PROCEDURE [dbo].[test]
(@PassedTableName nvarchar(100))
AS
BEGIN
DECLARE @TableName AS NVarchar(255) = 'defaultTablenName'
SELECT @TableName = QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @PassedTableName
DECLARE @sql0 AS NVARCHAR(MAX)
SELECT @sql0 = 'select count(*) from ' + @TableName
EXEC(@SQL0)
答案 0 :(得分:3)
只需在声明参数时指定默认值:
CREATE PROCEDURE [dbo].[test]
(@PassedTableName nvarchar(100) = 'defaultTableName')
如果用户传入参数,它将使用它。如果他们排除参数,则默认为defaultTableName
。
NULL
(通过调用dbo.test @PassedTableName = NULL
),则值为NULL
。在这种情况下,我建议:
CREATE PROCEDURE [dbo].[test]
(@PassedTableName nvarchar(100) = NULL)
IF @PassedTableName IS NULL
SET @PassedTableName = 'defaultTableName'
答案 1 :(得分:2)
您可以使用Scanner scanner = new Scanner(System.in);
do {
System.out.println("Enter your grades for all the subjects: ");
String text = new String(scanner.nextLine());
//... do what you want here ...
} while (scanner.hasNextLine());
scanner.close();
或在声明参数时指定默认值来执行此操作。
COALESCE
或
CREATE PROCEDURE [dbo].[test]
(@PassedTableName nvarchar(100) = 'defaultTableName')
要么工作。使用DO STUFF WHERE tablename = COALESCE(@PassedTableName,'defaultTableName')
IF