/// <summary> /// Creates a new <see cref="AnyTableSqlParameter"/> for describing a parameter of the table valued function <paramref name="parent"/>. This is public so that /// it can be used for later synchronization as well as initial import. /// </summary> /// <param name="parent"></param> /// <param name="discoveredParameter"></param> internal AnyTableSqlParameter CreateParameter(ITableInfo parent, DiscoveredParameter discoveredParameter) { var created = new AnyTableSqlParameter(_repository, parent, GetParamaterDeclarationSQL(discoveredParameter)); ParametersCreated.Add(created); return(created); }
public override DiscoveredParameter[] DiscoverTableValuedFunctionParameters(DbConnection connection, DiscoveredTableValuedFunction discoveredTableValuedFunction, DbTransaction transaction) { List <DiscoveredParameter> toReturn = new List <DiscoveredParameter>(); string query = @"select sys.parameters.name AS name, sys.types.name AS TYPE_NAME, sys.parameters.max_length AS LENGTH, sys.types.collation_name AS COLLATION_NAME, sys.parameters.scale AS SCALE, sys.parameters.precision AS PRECISION from sys.parameters join sys.types on sys.parameters.user_type_id = sys.types.user_type_id where object_id = OBJECT_ID('" + GetObjectName(discoveredTableValuedFunction) + "')"; using (DbCommand cmd = discoveredTableValuedFunction.GetCommand(query, connection)) { cmd.Transaction = transaction; using (var r = cmd.ExecuteReader()) { while (r.Read()) { DiscoveredParameter toAdd = new DiscoveredParameter(r["name"].ToString()); toAdd.DataType = new DiscoveredDataType(r, GetSQLType_FromSpColumnsResult(r), null); toReturn.Add(toAdd); } } } return(toReturn.ToArray()); }
/// <summary> /// Creates a parameter declaration SQL for the given <paramref name="parameter"/> e.g. if the parameter is @myVar varchar(10) then the declare SQL might be /// DECLARE @myVar as varchar(10);. /// /// <para><seealso cref="IQuerySyntaxHelper.GetParameterDeclaration(string,string)"/></para> /// </summary> internal string GetParamaterDeclarationSQL(DiscoveredParameter parameter) { var syntaxHelper = _tableValuedFunction.Database.Server.GetQuerySyntaxHelper(); return(syntaxHelper.GetParameterDeclaration(parameter.ParameterName, parameter.DataType.SQLType)); }